カスタムadapterの作成

AppLovin Maxのmediation matrixに掲載されていない広告ネットワークをサポートしたい場合は、カスタムadapterを作成することができます。 以下の手順でその方法を説明します。

    Android

    com.applovin.mediation.adapters.MediationAdapterBaseのサブクラスを実装します。 このサブクラスにより、カスタムmediation adapterとAppLovin Max SDKの間のインターフェースが有効になります。 このインターフェースは、初期化、バージョニング、リソースのクリーンアップなど、SDKの機能を処理します。

    1. アプリケーションのcom.applovin.mediation.adaptersパッケージ内にMediationAdapterBaseのサブクラスを作成します。 このクラス名にはネットワーク名を含める必要があります(例:com.mycompanyname.MyNetworkMediationAdapter)。
    2. initialize(final MaxAdapterInitializationParameters parameters, final Activity activity, final OnCompletionListener onCompletionListener)メソッドをオーバーライドします。 広告ネットワークSDKを初期化するコードを実装します。 管理画面で設定されたアプリIDにアクセスする必要がある場合は、parameters.getServerParameters().getString( "app_id", null );を介してアクセスできます。 このロジックは、AppLovin SDKの初期化と並行して実行されます。 広告ネットワークの初期化後にonCompletionListener.onCompletion()を呼び出し、その完了ハンドラーに以下のいずれかの値を渡します。
      • 広告ネットワークSDKの初期化中:InitializationStatus.INITIALIZING
      • 広告ネットワークSDKの初期化に成功した場合:InitializationStatus.INITIALIZED_SUCCESS
      • 広告ネットワークSDKの初期化に失敗した場合:InitializationStatus.INITIALIZED_FAILURE(関連するエラーメッセージを伴う)
      • 広告ネットワークSDKに初期化コールバックのステータスがない場合:InitializationStatus.DOES_NOT_APPLY
      • 広告ネットワークが明示的に初期化されたが、ステータスがない場合:InitializationStatus.INITIALIZED_UNKNOWN
    3. getSdkVersion()メソッドをオーバーライドします。 そのメソッドからネットワークSDKのバージョン文字列を返すコードを実装します。
    4. getAdapterVersion()メソッドをオーバーライドします。 そのメソッドからmediation adapterのバージョン番号を返すコードを実装します。 AppLovinのすべてのadapterは、5桁のバージョン管理スキームを使用しています。 左側の4桁はネットワークSDKのバージョンに対応しています。 最後の数字はマイナーバージョン番号を表し、adapterのリリースを指します。
    5. onDestroy()メソッドをオーバーライドします。 そのメソッドにネットワークSDKオブジェクトのクリーンアップロジックを実装します。

    バナー広告

    1. com.mycompanyname.MyNetworkMediationAdapterクラスにMaxAdViewAdapterインターフェースを実装します。
    2. 広告をリクエストするloadAdViewAd()メソッドをオーバーライドします。 parameters.getThirdPartyAdPlacementId()メソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。
    3. 適切なMaxAdViewAdapterListenerメソッドを呼び出します。 これらは、バナーのライフサイクルイベントについてAppLovin Max SDKに通知します。
      • 広告がロードされたら、MaxAdViewAdapterListener.onAdViewAdLoaded()を呼び出します。
      • 広告のロードに失敗したら、適切なMaxAdapterErrorを伴ってMaxAdViewAdapterListener.onAdViewAdLoadFailed()を呼び出します。
      • 必要に応じて、以下のバナーライフサイクルイベント通知を適宜呼び出します:onAdViewAdClicked()onAdViewAdCollapsed()onAdViewAdDisplayed()onAdViewAdDisplayFailed()onAdViewAdExpanded()onAdViewAdHidden()

    インタースティシャル

    1. com.mycompanyname.MyNetworkMediationAdapterクラスにMaxInterstitialAdapterインターフェースを実装します。
    2. 広告をリクエストするloadInterstitialAd()メソッドをオーバーライドします。 parameters.getThirdPartyAdPlacementId()メソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。
    3. ロードされた広告を表示するshowInterstitialAd()メソッドをオーバーライドします。 parameters.getThirdPartyAdPlacementId()メソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。 広告の準備ができていない場合は、MaxInterstitialAdapterListener.onInterstitialAdDisplayFailed( MaxAdapterError.AD_NOT_READY )を呼び出します。
    4. 適切なMaxInterstitialAdapterListenerメソッドを呼び出します。 これらは、インタースティシャルのライフサイクルイベントについてAppLovin Max SDKに通知します。
      • 広告がロードされたら、MaxInterstitialAdapterListener.onInterstitialAdLoaded()を呼び出します。
      • 広告のロードに失敗したら、適切なMaxAdapterErrorを伴ってMaxInterstitialAdapterListener.onInterstitialAdLoadFailed()を呼び出します。
      • 広告が非表示になったら、MaxInterstitialAdapterListener.onInterstitialAdHidden()を呼び出します。
      • 必要に応じて、以下のインタースティシャルライフサイクルイベント通知を適宜呼び出します:onInterstitialAdClicked()onInterstitialAdDisplayFailed()

    レワード広告

    1. com.mycompanyname.MyNetworkMediationAdapterクラスにMaxRewardedAdapterインターフェースを実装します。
    2. 広告をリクエストするloadRewardedAd()メソッドをオーバーライドします。 parameters.getThirdPartyAdPlacementId()メソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。
    3. ロードされた広告を表示するshowRewardedAd()メソッドをオーバーライドします。 parameters.getThirdPartyAdPlacementId()メソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。 広告の準備ができていない場合は、MaxRewardedAdapterListener.onRewardedAdDisplayFailed( MaxAdapterError.AD_NOT_READY )を呼び出します。
    4. 適切なMaxRewardedAdapterListenerメソッドを呼び出します。 これらは、レワードビデオのライフサイクルイベントについてAppLovin Max SDKに通知します。
      • 広告がロードされたら、MaxRewardedAdapterListener.onRewardedAdLoaded()を呼び出します。
      • 広告のロードに失敗したら、適切なMaxAdapterErrorを伴ってMaxRewardedAdapterListener.onRewardedAdLoadFailed()を呼び出します。
      • 広告の再生が開始されたら、MaxRewardedAdapterListener.onRewardedAdDisplayed()を呼び出します。
      • ユーザーにリワードを付与する必要がある場合は、適切なMaxRewardの額と通貨を伴ってMaxRewardedAdapterListener.onUserRewarded()を呼び出します。 額が利用できない場合は、デフォルトでMaxReward.DEFAULT_AMOUNTになります。 AppLovinは、これをMaxRewardedAdapterListener.onRewardedAdHidden()の直前に呼び出すことを推奨します。
      • 広告が非表示になったら、MaxRewardedAdapterListener.onRewardedAdHidden()を呼び出します。
      • 必要に応じて、以下のレワードビデオライフサイクルイベント通知を適宜呼び出します:onRewardedAdClicked()

    ネイティブ広告

    1. com.mycompanyname.MyNetworkMediationAdapterクラスにMaxNativeAdAdapterインターフェースを実装します。
    2. 広告をリクエストするloadNativeAd()メソッドをオーバーライドします。
    3. 適切なMaxNativeAdAdapterListenerメソッドを呼び出します。 これらは、ネイティブ広告のライフサイクルイベントについてAppLovin Max SDKに通知します。
      • 広告がロードされたら、MaxNativeAdAdapterListener.onNativeAdLoaded()を呼び出します。
      • 広告のロードに失敗したら、適切なMaxAdapterErrorを伴ってMaxNativeAdAdapterListener.onNativeAdLoadFailed()を呼び出します。
      • 広告が表示されたら、MaxNativeAdAdapterListener.onNativeAdDisplayed()を呼び出します。
      • ユーザーが広告をクリックしたら、MaxNativeAdAdapterListener.onNativeAdClicked()を呼び出します。

    プライバシー

    MAXは、ユーザーがプライバシーに関する同意を提供しているかどうかを示す2つのbooleanフラグを提供しています。 これらはBooleanオブジェクトです。 ユーザーが同意・非同意のいずれも示していない場合、その値はnullになります。 MAXは各メソッドにparametersオブジェクトを渡します。 プライバシーフラグの値を取得するには、parametersオブジェクトの以下のメソッドを使用します。

    MaxAdapterParameters.hasUserConsent()
    GDPR同意フラグ用。 GDPRがユーザーに適用されるかどうかを判断するには、本ドキュメントの「SDK integration guides」 > 「Platform」 > 「Overview」 > 「Privacy」ページを参照してください。
    MaxAdapterParameters.isDoNotSell()
    複数州のターゲット広告同意フラグ用。 AppLovinは、ユーザーがこれが適用される地域に属しているかどうかを示すAPIを提供していません。

    iOS

    ALMediationAdapterのサブクラスを実装します。 このサブクラスにより、カスタムmediation adapterとAppLovin Max SDKの間のインターフェースが有効になります。 このインターフェースは、初期化、バージョニング、リソースのクリーンアップなど、SDKの機能を処理します。

    1. プロジェクト内にALMediationAdapterを継承する.mおよび.hファイルを作成します。 このクラス名にはネットワーク名を含める必要があります(例:MyNetworkMediationAdapter)。
    2. - (void)initializeWithParameters:(id<MAAdapterInitializationParameters>)parameters completionHandler:(void (^)(MAAdapterInitializationStatus, NSString *_Nullable))completionHandlerメソッドを実装します。 広告ネットワークSDKを初期化するコードを実装します。 管理画面で設定されたアプリIDは、parameters.serverParameters[@"app_id"]から取得できます。 このロジックは、AppLovin SDKの初期化と並行して実行されます。 広告ネットワークの初期化後にcompletionHandlerを呼び出し、そのハンドラーに以下のいずれかの値を渡します。
      • 広告ネットワークSDKの初期化中:MAAdapterInitializationStatusInitializing
      • 広告ネットワークSDKの初期化に成功した場合:MAAdapterInitializationStatusInitializedSuccess
      • 広告ネットワークSDKの初期化に失敗した場合:MAAdapterInitializationStatusInitializedFailure(関連するエラーメッセージを伴う)
      • 広告ネットワークSDKに初期化コールバックのステータスがない場合:MAAdapterInitializationStatusDoesNotApply(エラーメッセージとしてnullを伴う)
      • 広告ネットワークが明示的に初期化されたが、ステータスがない場合:MAAdapterInitializationStatusInitializedUnknown
    3. - (NSString *)SDKVersionメソッドを実装します。 そのメソッドからネットワークSDKのバージョン文字列を返すコードを実装します。
    4. - (NSString *)adapterVersionメソッドを実装します。 そのメソッドからmediation adapterのバージョン番号を返すコードを実装します。 AppLovinのすべてのadapterは、5桁のバージョン管理スキームを使用しています。 左側の4桁はネットワークSDKのバージョンに対応しています。 最後の数字はマイナーバージョン番号を表し、adapterのリリースを指します。
    5. - (void)destroyメソッドを実装します。 そのメソッドにネットワークSDKオブジェクトのクリーンアップロジックを実装します。

    バナー広告

    1. MyNetworkMediationAdapterクラスにMAAdViewAdapterプロトコルを実装します。
    2. 広告をリクエストする- (void)loadAdViewAdForParameters:(id<MAAdapterResponseParameters>)parameters adFormat:(MAAdFormat *)adFormat andNotify:(id<MAAdViewAdapterDelegate>)delegateメソッドを実装します。 parameters.thirdPartyAdPlacementIdentifierメソッドを呼び出して、広告ロジックに必要なPlacement IDを取得します。
    3. 適切なMAAdViewAdapterDelegateメソッドを呼び出します。 これらは、バナーのライフサイクルイベントについてAppLovin Max SDKに通知します。
      • 広告がロードされたら、-[MAAdViewAdapterDelegate didLoadAdForAdView]を呼び出します。
      • 広告のロードに失敗したら、適切なMAAdapterErrorを伴って-[MAAdViewAdapterDelegate didFailToLoadAdViewAdWithError:]を呼び出します。
      • 必要に応じて、以下のバナーライフサイクルイベント通知を適宜呼び出します:didClickAdViewAddidCollapseAdViewAddidDisplayAdViewAddidExpandAdViewAddidFailToDisplayAdViewAdWithErrordidHideAdViewAd

    インタースティシャル

    1. MyNetworkMediationAdapterクラスにMAInterstitialAdapterプロトコルを実装します。
    2. 広告をリクエストする- (void)loadInterstitialAdForParameters:(id<MAAdapterResponseParameters>)parameters andNotify:(id<MAInterstitialAdapterDelegate>)delegateメソッドを宣言します。 parameters.thirdPartyAdPlacementIdentifierメソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。
    3. ロードされた広告を表示する- (void)showInterstitialAdForParameters:(id<MAAdapterResponseParameters>)parameters andNotify:(id<MAInterstitialAdapterDelegate>)delegateメソッドを宣言します。 parameters.thirdPartyAdPlacementIdentifierメソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。 広告の準備ができていない場合は、-[MAInterstitialAdapterDelegate didFailToDisplayInterstitialAdWithError: MAAdapterError.adNotReady]を呼び出します。
    4. 適切なMAInterstitialAdapterDelegateメソッドを呼び出します。 これらは、インタースティシャルのライフサイクルイベントについてAppLovin Max SDKに通知します。
      • 広告がロードされたら、-[MAInterstitialAdapterDelegate didLoadInterstitialAd:]を呼び出します。
      • 広告のロードに失敗したら、適切なMAAdapterErrorを伴って-[MAInterstitialAdapterDelegate didFailToLoadInterstitialAdWithError:]を呼び出します。
      • 広告が表示されたら、-[MAInterstitialAdapterDelegate didDisplayInterstitialAd]を呼び出します。
      • 広告が非表示になったら、-[MAInterstitialAdapterDelegate didHideInterstitialAd:]を呼び出します。
      • 必要に応じて、以下のインタースティシャルライフサイクルイベント通知を適宜呼び出します:didClickInterstitialAddidFailToDisplayInterstitialAdWithError

    レワード広告

    1. MyNetworkMediationAdapterクラスにMARewardedAdapterプロトコルを実装します。
    2. 広告をリクエストする- (void)loadRewardedAdForParameters:(id<MAAdapterResponseParameters>)parameters andNotify:(id<MARewardedAdapterDelegate>)delegate;メソッドを宣言します。 parameters.thirdPartyAdPlacementIdentifierメソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。
    3. ロードされた広告を表示する- (void)showRewardedAdForParameters:(id<MAAdapterResponseParameters>)parameters andNotify:(id<MARewardedAdapterDelegate>)delegate;メソッドを宣言します。 parameters.thirdPartyAdPlacementIdentifierメソッドを呼び出して、広告ロジックに必要なplacement IDを取得します。 広告の準備ができていない場合は、-[MARewardedAdapterDelegate didFailToDisplayRewardedAdWithError: MAAdapterError.adNotReady]を呼び出します。
    4. 適切なMARewardedAdapterDelegateメソッドを呼び出します。 これらは、レワードビデオのライフサイクルイベントについてAppLovin Max SDKに通知します。
      • 広告がロードされたら、-[MARewardedAdapterDelegate didLoadRewardedAd:]を呼び出します。
      • 広告のロードに失敗したら、適切なMAAdapterErrorを伴って-[MARewardedAdapterDelegate didFailToLoadRewardedAdWithError:]を呼び出します。
      • 広告の再生が開始されたら、-[MARewardedAdapterDelegate didDisplayRewardedAd:]を呼び出します。
      • ユーザーにリワードを付与する必要がある場合は、適切なMARewardの額と通貨を伴って-[MARewardedAdapterDelegate didRewardUserWithReward:]を呼び出します。 額が利用できない場合は、デフォルトでMAReward.defaultAmountになります。 AppLovinは、これを-[MARewardedAdapterDelegate didHideRewardedAd:]の直前に呼び出すことを推奨します。
      • 広告が非表示になったら、-[MARewardedAdapterDelegate didHideRewardedAd:]を呼び出します。
      • 必要に応じて、以下のレワードビデオライフサイクルイベント通知を適宜呼び出します:didClickRewardedAd

    ネイティブ広告

    1. MyNetworkMediationAdapterクラスにMANativeAdAdapterプロトコルを実装します。
    2. 広告をリクエストする- (void)loadNativeAdForParameters:(id<MAAdapterResponseParameters>)parameters andNotify:(id<MANativeAdAdapterDelegate>)delegate;メソッドを実装します。
    3. 適切なMANativeAdAdapterDelegateメソッドを呼び出します。 これらは、ネイティブ広告のライフサイクルイベントについてAppLovin Max SDKに通知します。
      • 広告がロードされたら、-[MANativeAdAdapterDelegate didLoadAdForNativeAd:]を呼び出します。
      • 広告のロードに失敗したら、適切なMAAdapterErrorを伴って-[MANativeAdAdapterDelegate didFailToLoadNativeAdWithError:]を呼び出します。
      • 広告が表示されたら、-[MANativeAdAdapterDelegate didDisplayNativeAdWithExtraInfo:]を呼び出します。
      • ユーザーが広告をクリックしたら、-[MANativeAdAdapterDelegate didClickNativeAd:]を呼び出します。

    プライバシー

    MAXは、ユーザーがプライバシーに関する同意を提供しているかどうかを示す2つのbooleanフラグを提供しています。 これらはNSNumberオブジェクトです。 ユーザーが同意・非同意のいずれも示していない場合、その値はnullになります。 MAXは各メソッドにparametersオブジェクトを渡します。 プライバシーフラグの値を取得するには、parametersオブジェクトの以下のAPIを使用します。

    -[MAAdapterParameters hasUserConsent]
    GDPR同意フラグ用。 GDPRがユーザーに適用されるかどうかを判断するには、本ドキュメントの「SDK integration guides」 > 「Platform」 > 「Overview」 > 「Privacy」ページを参照してください。
    -[MAAdapterParameters isDoNotSell]
    複数州のターゲット広告同意フラグ用。 AppLovinは、ユーザーがこれが適用される地域に属しているかどうかを示すAPIを提供していません。

テスト方法

MAXデモアプリを使用して、カスタムadapterをテストできます(「SDK integration guides」 > 「Platform」 > 「Testing networks」を参照)。 広告リクエストを取得するには、ウォーターフォール内におけるプレースメントのCPMを引き上げてください。

トラブルシューティング

カスタムadapterが期待通りにウォーターフォールに表示されない場合は、以下のトラブルシューティングチェックリストを使用してください。

  1. テストモードを無効にします(「SDK integration guides」 > 「Platform」 > 「Testing networks」 > 「Test mode」を参照)。
  2. アプリのパッケージ名、広告ユニット、およびSDKキーがすべて一致していることを確認します。
  3. 実機でテストします。
  4. カスタムネットワークのCPMを、ウォーターフォールで落札できる十分な高さに設定します。

search