ADXUnity - adxcorp/ADXLibrary_Integration GitHub Wiki
Version : 1.10.1
Release Date : 2021/07/01
์ ์ฒด
๋ฆฌ์๋ ๋น๋์ค ์ ์ฉ
- ์๋ก์ด ๋ฒ์ ์ ๋ฐ์ดํธ ์ ADX ๊ด๋ จ Library๋ฅผ ๋ชจ๋ ์ง์ฐ๊ณ ์๋ก import ํด์ฃผ์ธ์.
- GooglePlayServiceResolver๊ฐ ์ด๋ฏธ ํฌํจ๋์ด์์ผ์๋ค๋ฉด ์ ํฌ ํจํค์ง์์ PlayServicesResolver๋ฅผ ์ ์ธํ์ ํ import ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
- GoogleMobileAdsSettings์ ์ ๋ ฅํ App ID๊ฐ ์ญ์ ๋๋ ๊ฒฝ์ฐ Unity > Assets > Google Mobile Ads > Settings์์ Delay app measure๋ฅผ ์ฒดํฌ ํ๋ค๊ฐ ํด์ ํ์ฌ ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค
- 1.9.0 ์ดํ ๋ฒ์ ์ฐ๋ ์, build.gradle์ compileOption์ด ์ถ๊ฐ๋์ด์ผ ํฉ๋๋ค.
android {
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
}
- Children's Online Privacy Protection Act (COPPA) ์ค์ ์ด ํ์ํ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ๊ด๊ณ ๋ก๋์์ TagForChildDirectedTreatment๋ฅผ ์ถ๊ฐํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
AdRequest request = new AdRequest.Builder()
.TagForChildDirectedTreatment(true)
.Build();
- iOS build run ์์ ์๋์ ๊ฐ์ด MoPubSDKFramework๋ฅผ ๋ก๋ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ์๋, Project > General > Embedded Binaries์ MoPubSDKFramework๋ฅผ ์ถ๊ฐํ์ฌ ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
dyld: Library not loaded: @rpath/MoPubSDKFramework.framework/MoPubSDKFramework
- (์ฃผ์) MoPub/AdMob ์ฐ๋ ์ฝ๋๋ฅผ ํจ๊ป ์ฌ์ฉํ์๋ฉด ์ ์์ ์ผ๋ก delegate method ํธ์ถ์ด ๋์ง ์์ ์ ์์ผ๋ฏ๋ก, ๋ฐ๋์ ํ๋์ ์ฐ๋ ์ฝ๋๋ง ์ฌ์ฉํด์ฃผ์ ์ผ ํฉ๋๋ค.
- 2021๋
4์ 27์ผ ์๋ฒฝ, ๊ฐ์ธ๋ณดํธ ๊ธฐ๋ฅ์ ๊ฐํํ๋ iOS14.5๊ฐ ๋ฐฐํฌ๋์์ต๋๋ค. ๋ฐ๋์ ์๋ ๊ฐ์ด๋๋ฅผ ํตํด ์ฐ๋ ์งํ ๋ถํ๋๋ฆฝ๋๋ค.
๊ฐ๋ฐ์ค ๋ฐ๋์ ์๋ ๋ด์ฉ์ ์ฐธ๊ณ ํ์ฌ ํ ์คํธ ๋๋ฐ์ด์ค๋ฅผ ๋ฑ๋ก ํ ์ฌ์ฉํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค. ํ ์คํธ ๋๋ฐ์ด์ค ๋ฏธ๋ฑ๋ก ์ํ๋ก ํ ์คํธํ ๊ฒฝ์ฐ ๊ณ์ ์ด ์ ์ง๋ ์ ์์ต๋๋ค.
ADXLibrary๋ฅผ ์ ์ฉํ์ฌ ๊ด๊ณ ๋ฅผ ๋ก๋ํ๋ ์ฝ๋๊ฐ ์ฝ์ ๋ ์ํ๋ก run ํด์ฃผ์๋ฉด ์๋์ ๊ฐ์ ๋ก๊ทธ๋ฅผ ํ์ธํ์ค ์ ์์ต๋๋ค.
I/Ads: Use AdRequest.Builder.addTestDevice("33BE2250B43518CCDA7DE426D04EE232")
to get test ads on this device.
<Google> To get test ads on this device, set:
GADMobileAds.sharedInstance.requestConfiguration.testDeviceIdentifiers = @[ @"aa20271272d6558e1bff61b329dd436c" ];
์ถ๋ ฅ ๋ Device ID๋ฅผ ๋ณต์ฌํ์ฌ ์๋์ ๊ฐ์ด AdRequest์์ AddTestDevice๋ฅผ call ํ๋๋ก ์์ ํด์ฃผ์ธ์.
AdRequest request = new AdRequest.Builder()
.AddTestDevice("2077ef9a63d2b398840261c8221a0c9b")
.Build();
https://developers.google.com/admob/unity/targeting
AdRequest request = new AdRequest.Builder()
.TagForChildDirectedTreatment(true)
.Build();
https://support.google.com/admob/answer/7562142
AdRequest request = new AdRequest.Builder()
.AddExtra("max_ad_content_rating", "G")
.Build();
1) git-lfs install
brew install git-lfs
2) please put this command
sudo git lfs install --system
- ๋ฐ๊ธ๋ฐ์ผ์ Ad Unit ID ์ค ์์์ 1๊ฐ๋ฅผ ์ฌ์ฉํ์ฌ Initialize ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.
- OnADXConsentCompleted callback์ ๋ฐ์ ๋ค ๊ด๊ณ ๊ด๋ จ ํจ์๋ค์ ์ฌ์ฉํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
์ ๋ฝ ์ธ ์ง์ญ์์ Consent UI๋ฅผ ํ์ธํ์๊ณ ์ ํ ๊ฒฝ์ฐ์๋ debugState๋ฅผ 1๋ก ์ค์ ํด์ฃผ์ธ์.
// debugState 0 : DEFAULT
// debugState 1 : DEBUG (InEEA)
ADXGDPRManager.InitializeWithShowADXConsent ("MOPUB AD UNIT ID or EMPTY STRING", debugState);
ADXGDPR.OnADXConsentCompleted += onADXConsentCompleted;
// consentState 0 : ๋์์ฌ๋ถ๊ฐ ์กด์ฌํ์ง ์๋ ์ํ
// consentState 1 : ๋์์ฌ๋ถ๊ฐ ํ์์๋ ์ง์ญ
// consentState 2 : ์ฌ์ฉ์๊ฐ ๊ฐ์ธ์ ๋ณด ํ์ฉ ๋ฐ ์์ง์ ๊ฑฐ๋ถํ ์ํ
// consentState 3 : ์ฌ์ฉ์๊ฐ ๊ฐ์ธ์ ๋ณด ํ์ฉ ๋ฐ ์์ง์ ๋์ํ ์ํ
ADXGDPRManager.InitializeWithSetConsentState ("MOPUB AD UNIT ID or EMPTY STRING", consentState);
ADXGDPR.OnADXConsentCompleted += onADXConsentCompleted;
- ๋์ ์ฌ๋ถ๋ฅผ ํ์ธ/๋ณ๊ฒฝ ํ์๋ ๊ฒฝ์ฐ ์๋ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
// 0 : ๋์์ฌ๋ถ๊ฐ ์กด์ฌํ์ง ์๋ ์ํ
// 1 : ๋์์ฌ๋ถ๊ฐ ํ์์๋ ์ง์ญ
// 2 : ์ฌ์ฉ์๊ฐ ๊ฐ์ธ์ ๋ณด ํ์ฉ ๋ฐ ์์ง์ ๊ฑฐ๋ถํ ์ํ
// 3 : ์ฌ์ฉ์๊ฐ ๊ฐ์ธ์ ๋ณด ํ์ฉ ๋ฐ ์์ง์ ๋์ํ ์ํ
ADXGDPRManager.SetConsentState();
ADXGDPRManager.GetConsentState();
- AD(x)์ Privacy Policy ๋ฌธ์ URL์ ์๋ ํจ์๋ฅผ ํธ์ถํ์ฌ ์ฌ์ฉํ์ค์ ์์ต๋๋ค.
ADXGDPRManager.GetPrivacyPolicyURL();
- Rewarded Video๋ฅผ Request ํ์ค ๋์๋ ์๋ ์ฝ๋๋ฅผ ํจ๊ป ์ถ๊ฐํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค. GDPR ๊ท์ ์ ์ค์ํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ถ๊ฐํ์ง ์์ผ์ ๋ ๋ฉ๋๋ค.
if (ADXGDPRManager.GetConsentState () == 2) {
AdRequest request = new AdRequest.Builder ()
.AddExtra ("npa", "1")
.Build ();
rewardedVideo.LoadAd (request, admobRvAdUnitID);
}
#if UNITY_ANDROID
var allBannerAdUnits = new string[] { "<ANDROID_BANNER_ADUNIT_ID>" };
var allInterstitialAdUnits = new string[] { "<ANDROID_INTERSTITIAL_ADUNIT_ID>" };
MoPub.LoadBannerPluginsForAdUnits(allBannerAdUnits);
MoPub.LoadInterstitialPluginsForAdUnits(allInterstitialAdUnits);
#elif UNITY_IPHONE
var allBannerAdUnits = new string[] { "<IOS_BANNER_ADUNIT_ID>" };
var allInterstitialAdUnits = new string[] { "<IOS_INTERSTITIAL_ADUNIT_ID>" };
MoPub.LoadBannerPluginsForAdUnits(allBannerAdUnits);
MoPub.LoadInterstitialPluginsForAdUnits(allInterstitialAdUnits);
#endif
MobileAds.Initialize(initStatus => {
Debug.Log("MobileAds Initialize Completed");
});
MoPub.RequestBanner ("<BANNER_ADUNIT_ID>", MoPub.AdPosition.BottomCenter, MoPub.MaxAdSize.ScreenWidthHeight50);
MoPub.RequestInterstitialAd ("<INTERSTITIAL_ADUNIT_ID>");
MoPub.ShowInterstitialAd ("<INTERSTITIAL_ADUNIT_ID>");
- Unity > Assets > Google Mobile Ads > Settings๋ฅผ ์ ํํ์ฌ ๊ฐ ํ๋์ Android ๋ฐ iOS App ID๋ฅผ ์ ๋ ฅํฉ๋๋ค.
public void onADXConsentCompleted(string s) {
MobileAds.Initialize(initStatus => {
Debug.Log("MobileAds Initialize Completed");
});
}
#if UNITY_ANDROID
string adUnitId = "<REWARDEDVIDEO_ADUNIT_ID>";
#elif UNITY_IPHONE
string adUnitId = "<REWARDEDVIDEO_ADUNIT_ID>";
#else
string adUnitId = "unexpected_platform";
#endif
public void LoadAdMobRV() {
rewardedAd = new RewardedAd(adUnitId);
rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
rewardedAd.OnAdOpening += HandleRewardedAdOpening;
rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow;
rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
rewardedAd.OnAdClosed += HandleRewardedAdClosed;
if (ADXGDPRManager.GetConsentState() == 2) {
// Create an empty ad request.
AdRequest request = new AdRequest.Builder()
.AddExtra("npa", "1")
.Build();
rewardedAd.LoadAd(request);
} else {
// Create an empty ad request.
AdRequest request = new AdRequest.Builder()
.Build();
rewardedAd.LoadAd(request);
}
}
public showRV() {
if (rewardedAd.IsLoaded()) {
rewardedAd.Show();
}
}
// Fired when an ad loads in the banner. Includes the ad height.
public static event Action<string, float> OnAdLoadedEvent;
// Fired when an ad fails to load for the banner
public static event Action<string, string> OnAdFailedEvent;
// Android only. Fired when a banner ad is clicked
public static event Action<string> OnAdClickedEvent;
// Android only. Fired when a banner ad expands to encompass a greater portion of the screen
public static event Action<string> OnAdExpandedEvent;
// Android only. Fired when a banner ad collapses back to its initial size
public static event Action<string> OnAdCollapsedEvent;
// Fired when an interstitial ad is loaded and ready to be shown
public static event Action<string> OnInterstitialLoadedEvent;
// Fired when an interstitial ad fails to load
public static event Action<string, string> OnInterstitialFailedEvent;
// Fired when an interstitial ad is dismissed
public static event Action<string> OnInterstitialDismissedEvent;
// iOS only. Fired when an interstitial ad expires
public static event Action<string> OnInterstitialExpiredEvent;
// Android only. Fired when an interstitial ad is displayed
public static event Action<string> OnInterstitialShownEvent;
// Android only. Fired when an interstitial ad is clicked
public static event Action<string> OnInterstitialClickedEvent;
// Ad event fired when the reward video ad has been received.
event EventHandler<EventArgs> OnAdLoaded;
// Ad event fired when the reward video ad has failed to load.
event EventHandler<AdFailedToLoadEventArgs> OnAdFailedToLoad;
// Ad event fired when the reward video ad is opened.
event EventHandler<EventArgs> OnAdOpening;
// Ad event fired when the reward video ad has failed to show.
event EventHandler<AdFailedToLoadEventArgs> OnAdFailedToShow;
// Ad event fired when the reward video ad has rewarded the user.
event EventHandler<Reward> OnUserEarnedReward;
// Ad event fired when the reward video ad is closed.
event EventHandler<EventArgs> OnAdClosed;
Banner : https://developers.mopub.com/publishers/unity/banner
Interstitial : https://developers.mopub.com/publishers/unity/interstitial
Rewarded Video : https://developers.google.com/admob/unity/rewarded-ads
#if UNITY_ANDROID
var allRewardedAdUnits = new string[] { "<YOUR_ANDROID_AD_UNIT_ID>" };
MoPub.LoadRewardedVideoPluginsForAdUnits(allRewardedAdUnits);
#elif UNITY_IPHONE
var allRewardedAdUnits = new string[] { "<YOUR_IOS_AD_UNIT_ID>" };
MoPub.LoadRewardedVideoPluginsForAdUnits(allRewardedAdUnits);
#endif
#if UNITY_ANDROID
MoPub.RequestRewardedVideo ("<YOUR_ANDROID_AD_UNIT_ID>");
#elif UNITY_IPHONE
MoPub.RequestRewardedVideo ("<YOUR_IOS_AD_UNIT_ID>");
#endif
#if UNITY_ANDROID
MoPub.ShowRewardedVideo ("<YOUR_ANDROID_AD_UNIT_ID>");
#elif UNITY_IPHONE
MoPub.ShowRewardedVideo ("<YOUR_IOS_AD_UNIT_ID>");
#endif
// Fired when a rewarded video finishes loading and is ready to be displayed
public static event Action<string> OnRewardedVideoLoadedEvent;
// Fired when a rewarded video fails to load. Includes the error message.
public static event Action<string, string> OnRewardedVideoFailedEvent;
// iOS only. Fired when a rewarded video expires
public static event Action<string> OnRewardedVideoExpiredEvent;
// Fired when an rewarded video is displayed
public static event Action<string> OnRewardedVideoShownEvent;
// Fired when an rewarded video is clicked
public static event Action<string> OnRewardedVideoClickedEvent;
// Fired when a rewarded video fails to play. Includes the error message.
public static event Action<string, string> OnRewardedVideoFailedToPlayEvent;
// Fired when a rewarded video completes. Includes all the data available about the reward.
public static event Action<string, string, float> OnRewardedVideoReceivedRewardEvent;
// Fired when a rewarded video closes
public static event Action<string> OnRewardedVideoClosedEvent;
// iOS only. Fired when a rewarded video event causes another application to open
public static event Action<string> OnRewardedVideoLeavingApplicationEvent;