AppLovin Maxのmediation matrixに掲載されていない広告ネットワークをサポートしたい場合は、カスタムadapterを作成することができます。 以下の手順でその方法を説明します。
com.applovin.mediation.adapters.MediationAdapterBaseのサブクラスを実装します。
このサブクラスにより、カスタムmediation adapterとAppLovin Max SDKの間のインターフェースが有効になります。
このインターフェースは、初期化、バージョニング、リソースのクリーンアップなど、SDKの機能を処理します。
com.applovin.mediation.adaptersパッケージ内にMediationAdapterBaseのサブクラスを作成します。
このクラス名にはネットワーク名を含める必要があります(例:com.mycompanyname.MyNetworkMediationAdapter)。initialize(final MaxAdapterInitializationParameters parameters, final Activity activity, final OnCompletionListener onCompletionListener)メソッドをオーバーライドします。
広告ネットワークSDKを初期化するコードを実装します。
管理画面で設定されたアプリIDにアクセスする必要がある場合は、parameters.getServerParameters().getString( "app_id", null );を介してアクセスできます。
このロジックは、AppLovin SDKの初期化と並行して実行されます。
広告ネットワークの初期化後にonCompletionListener.onCompletion()を呼び出し、その完了ハンドラーに以下のいずれかの値を渡します。
InitializationStatus.INITIALIZINGInitializationStatus.INITIALIZED_SUCCESSInitializationStatus.INITIALIZED_FAILURE(関連するエラーメッセージを伴う)InitializationStatus.DOES_NOT_APPLYInitializationStatus.INITIALIZED_UNKNOWNgetSdkVersion()メソッドをオーバーライドします。
そのメソッドからネットワークSDKのバージョン文字列を返すコードを実装します。getAdapterVersion()メソッドをオーバーライドします。
そのメソッドからmediation adapterのバージョン番号を返すコードを実装します。
AppLovinのすべてのadapterは、5桁のバージョン管理スキームを使用しています。
左側の4桁はネットワークSDKのバージョンに対応しています。
最後の数字はマイナーバージョン番号を表し、adapterのリリースを指します。onDestroy()メソッドをオーバーライドします。
そのメソッドにネットワークSDKオブジェクトのクリーンアップロジックを実装します。com.mycompanyname.MyNetworkMediationAdapterクラスにMaxAdViewAdapterインターフェースを実装します。loadAdViewAd()メソッドをオーバーライドします。
parameters.getThirdPartyAdPlacementId()メソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。MaxAdViewAdapterListenerメソッドを呼び出します。
これらは、バナーのライフサイクルイベントについてAppLovin Max SDKに通知します。
MaxAdViewAdapterListener.onAdViewAdLoaded()を呼び出します。MaxAdapterErrorを伴ってMaxAdViewAdapterListener.onAdViewAdLoadFailed()を呼び出します。onAdViewAdClicked()、onAdViewAdCollapsed()、onAdViewAdDisplayed()、onAdViewAdDisplayFailed()、onAdViewAdExpanded()、onAdViewAdHidden()。com.mycompanyname.MyNetworkMediationAdapterクラスにMaxInterstitialAdapterインターフェースを実装します。loadInterstitialAd()メソッドをオーバーライドします。
parameters.getThirdPartyAdPlacementId()メソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。showInterstitialAd()メソッドをオーバーライドします。
parameters.getThirdPartyAdPlacementId()メソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。
広告の準備ができていない場合は、MaxInterstitialAdapterListener.onInterstitialAdDisplayFailed( MaxAdapterError.AD_NOT_READY )を呼び出します。MaxInterstitialAdapterListenerメソッドを呼び出します。
これらは、インタースティシャルのライフサイクルイベントについてAppLovin Max SDKに通知します。
MaxInterstitialAdapterListener.onInterstitialAdLoaded()を呼び出します。MaxAdapterErrorを伴ってMaxInterstitialAdapterListener.onInterstitialAdLoadFailed()を呼び出します。MaxInterstitialAdapterListener.onInterstitialAdHidden()を呼び出します。onInterstitialAdClicked()、onInterstitialAdDisplayFailed()。com.mycompanyname.MyNetworkMediationAdapterクラスにMaxRewardedAdapterインターフェースを実装します。loadRewardedAd()メソッドをオーバーライドします。
parameters.getThirdPartyAdPlacementId()メソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。showRewardedAd()メソッドをオーバーライドします。
parameters.getThirdPartyAdPlacementId()メソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。
広告の準備ができていない場合は、MaxRewardedAdapterListener.onRewardedAdDisplayFailed( MaxAdapterError.AD_NOT_READY )を呼び出します。MaxRewardedAdapterListenerメソッドを呼び出します。
これらは、レワードビデオのライフサイクルイベントについてAppLovin Max SDKに通知します。
MaxRewardedAdapterListener.onRewardedAdLoaded()を呼び出します。MaxAdapterErrorを伴ってMaxRewardedAdapterListener.onRewardedAdLoadFailed()を呼び出します。MaxRewardedAdapterListener.onRewardedAdDisplayed()を呼び出します。MaxRewardの額と通貨を伴ってMaxRewardedAdapterListener.onUserRewarded()を呼び出します。
額が利用できない場合は、デフォルトでMaxReward.DEFAULT_AMOUNTになります。
AppLovinは、これをMaxRewardedAdapterListener.onRewardedAdHidden()の直前に呼び出すことを推奨します。MaxRewardedAdapterListener.onRewardedAdHidden()を呼び出します。onRewardedAdClicked()。com.mycompanyname.MyNetworkMediationAdapterクラスにMaxNativeAdAdapterインターフェースを実装します。loadNativeAd()メソッドをオーバーライドします。MaxNativeAdAdapterListenerメソッドを呼び出します。
これらは、ネイティブ広告のライフサイクルイベントについてAppLovin Max SDKに通知します。
MaxNativeAdAdapterListener.onNativeAdLoaded()を呼び出します。MaxAdapterErrorを伴ってMaxNativeAdAdapterListener.onNativeAdLoadFailed()を呼び出します。MaxNativeAdAdapterListener.onNativeAdDisplayed()を呼び出します。MaxNativeAdAdapterListener.onNativeAdClicked()を呼び出します。MAXは、ユーザーがプライバシーに関する同意を提供しているかどうかを示す2つのbooleanフラグを提供しています。
これらはBooleanオブジェクトです。
ユーザーが同意・非同意のいずれも示していない場合、その値はnullになります。
MAXは各メソッドにparametersオブジェクトを渡します。
プライバシーフラグの値を取得するには、parametersオブジェクトの以下のメソッドを使用します。
MaxAdapterParameters.hasUserConsent()MaxAdapterParameters.isDoNotSell()ALMediationAdapterのサブクラスを実装します。
このサブクラスにより、カスタムmediation adapterとAppLovin Max SDKの間のインターフェースが有効になります。
このインターフェースは、初期化、バージョニング、リソースのクリーンアップなど、SDKの機能を処理します。
ALMediationAdapterを継承する.mおよび.hファイルを作成します。
このクラス名にはネットワーク名を含める必要があります(例:MyNetworkMediationAdapter)。- (void)initializeWithParameters:(id<MAAdapterInitializationParameters>)parameters completionHandler:(void (^)(MAAdapterInitializationStatus, NSString *_Nullable))completionHandlerメソッドを実装します。
広告ネットワークSDKを初期化するコードを実装します。
管理画面で設定されたアプリIDは、parameters.serverParameters[@"app_id"]から取得できます。
このロジックは、AppLovin SDKの初期化と並行して実行されます。
広告ネットワークの初期化後にcompletionHandlerを呼び出し、そのハンドラーに以下のいずれかの値を渡します。
MAAdapterInitializationStatusInitializingMAAdapterInitializationStatusInitializedSuccessMAAdapterInitializationStatusInitializedFailure(関連するエラーメッセージを伴う)MAAdapterInitializationStatusDoesNotApply(エラーメッセージとしてnullを伴う)MAAdapterInitializationStatusInitializedUnknown- (NSString *)SDKVersionメソッドを実装します。
そのメソッドからネットワークSDKのバージョン文字列を返すコードを実装します。- (NSString *)adapterVersionメソッドを実装します。
そのメソッドからmediation adapterのバージョン番号を返すコードを実装します。
AppLovinのすべてのadapterは、5桁のバージョン管理スキームを使用しています。
左側の4桁はネットワークSDKのバージョンに対応しています。
最後の数字はマイナーバージョン番号を表し、adapterのリリースを指します。- (void)destroyメソッドを実装します。
そのメソッドにネットワークSDKオブジェクトのクリーンアップロジックを実装します。MyNetworkMediationAdapterクラスにMAAdViewAdapterプロトコルを実装します。- (void)loadAdViewAdForParameters:(id<MAAdapterResponseParameters>)parameters adFormat:(MAAdFormat *)adFormat andNotify:(id<MAAdViewAdapterDelegate>)delegateメソッドを実装します。
parameters.thirdPartyAdPlacementIdentifierメソッドを呼び出して、広告ロジックに必要なPlacement IDを取得します。MAAdViewAdapterDelegateメソッドを呼び出します。
これらは、バナーのライフサイクルイベントについてAppLovin Max SDKに通知します。
-[MAAdViewAdapterDelegate didLoadAdForAdView]を呼び出します。MAAdapterErrorを伴って-[MAAdViewAdapterDelegate didFailToLoadAdViewAdWithError:]を呼び出します。didClickAdViewAd、didCollapseAdViewAd、didDisplayAdViewAd、didExpandAdViewAd、didFailToDisplayAdViewAdWithError、didHideAdViewAd。MyNetworkMediationAdapterクラスにMAInterstitialAdapterプロトコルを実装します。- (void)loadInterstitialAdForParameters:(id<MAAdapterResponseParameters>)parameters andNotify:(id<MAInterstitialAdapterDelegate>)delegateメソッドを宣言します。
parameters.thirdPartyAdPlacementIdentifierメソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。- (void)showInterstitialAdForParameters:(id<MAAdapterResponseParameters>)parameters andNotify:(id<MAInterstitialAdapterDelegate>)delegateメソッドを宣言します。
parameters.thirdPartyAdPlacementIdentifierメソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。
広告の準備ができていない場合は、-[MAInterstitialAdapterDelegate didFailToDisplayInterstitialAdWithError: MAAdapterError.adNotReady]を呼び出します。MAInterstitialAdapterDelegateメソッドを呼び出します。
これらは、インタースティシャルのライフサイクルイベントについてAppLovin Max SDKに通知します。
-[MAInterstitialAdapterDelegate didLoadInterstitialAd:]を呼び出します。MAAdapterErrorを伴って-[MAInterstitialAdapterDelegate didFailToLoadInterstitialAdWithError:]を呼び出します。-[MAInterstitialAdapterDelegate didDisplayInterstitialAd]を呼び出します。-[MAInterstitialAdapterDelegate didHideInterstitialAd:]を呼び出します。didClickInterstitialAd、didFailToDisplayInterstitialAdWithError。MyNetworkMediationAdapterクラスにMARewardedAdapterプロトコルを実装します。- (void)loadRewardedAdForParameters:(id<MAAdapterResponseParameters>)parameters andNotify:(id<MARewardedAdapterDelegate>)delegate;メソッドを宣言します。
parameters.thirdPartyAdPlacementIdentifierメソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。- (void)showRewardedAdForParameters:(id<MAAdapterResponseParameters>)parameters andNotify:(id<MARewardedAdapterDelegate>)delegate;メソッドを宣言します。
parameters.thirdPartyAdPlacementIdentifierメソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。
広告の準備ができていない場合は、-[MARewardedAdapterDelegate didFailToDisplayRewardedAdWithError: MAAdapterError.adNotReady]を呼び出します。MARewardedAdapterDelegateメソッドを呼び出します。
これらは、レワードビデオのライフサイクルイベントについてAppLovin Max SDKに通知します。
-[MARewardedAdapterDelegate didLoadRewardedAd:]を呼び出します。MAAdapterErrorを伴って-[MARewardedAdapterDelegate didFailToLoadRewardedAdWithError:]を呼び出します。-[MARewardedAdapterDelegate didDisplayRewardedAd:]を呼び出します。MARewardの額と通貨を伴って-[MARewardedAdapterDelegate didRewardUserWithReward:]を呼び出します。
額が利用できない場合は、デフォルトでMAReward.defaultAmountになります。
AppLovinは、これを-[MARewardedAdapterDelegate didHideRewardedAd:]の直前に呼び出すことを推奨します。-[MARewardedAdapterDelegate didHideRewardedAd:]を呼び出します。didClickRewardedAd。MyNetworkMediationAdapterクラスにMANativeAdAdapterプロトコルを実装します。- (void)loadNativeAdForParameters:(id<MAAdapterResponseParameters>)parameters andNotify:(id<MANativeAdAdapterDelegate>)delegate;メソッドを実装します。MANativeAdAdapterDelegateメソッドを呼び出します。
これらは、ネイティブ広告のライフサイクルイベントについてAppLovin Max SDKに通知します。
-[MANativeAdAdapterDelegate didLoadAdForNativeAd:]を呼び出します。MAAdapterErrorを伴って-[MANativeAdAdapterDelegate didFailToLoadNativeAdWithError:]を呼び出します。-[MANativeAdAdapterDelegate didDisplayNativeAdWithExtraInfo:]を呼び出します。-[MANativeAdAdapterDelegate didClickNativeAd:]を呼び出します。MAXは、ユーザーがプライバシーに関する同意を提供しているかどうかを示す2つのbooleanフラグを提供しています。
これらはNSNumberオブジェクトです。
ユーザーが同意・非同意のいずれも示していない場合、その値はnullになります。
MAXは各メソッドにparametersオブジェクトを渡します。
プライバシーフラグの値を取得するには、parametersオブジェクトの以下のAPIを使用します。
-[MAAdapterParameters hasUserConsent]-[MAAdapterParameters isDoNotSell]MAXデモアプリを使用して、カスタムadapterをテストできます(「SDK integration guides」 > 「Platform」 > 「Testing networks」を参照)。 広告リクエストを取得するには、ウォーターフォール内におけるプレースメントのCPMを引き上げてください。
カスタムadapterが期待通りにウォーターフォールに表示されない場合は、以下のトラブルシューティングチェックリストを使用してください。