コンテンツにスキップ

カスタムアダプターの作成

AppLovin MAX メディエーションマトリックスにリストされていないアドネットワークをサポートする場合は、カスタムアダプターを作成できます。次の手順は、それを行う方法を示しています。

Android

com.applovin.mediation.adapters.MediationAdapterBase のサブクラスを実装してください。このサブクラスは、メディエーションアダプターと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を初期化するコードを実装してください。 UIで設定されたアプリ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()メソッドをオーバーライドします。 そのメソッドからメディエーションアダプターのバージョン番号を返すコードを実装します。 AppLovinのすべてのアダプターは、5つの数字からなるバージョン管理方式を使用しています。左から4桁は、ネットワークSDKのバージョンに対応しています。 最後の数字はマイナーバージョン番号を示しており、アダプターのリリースに対応しています。
  5. onDestroy()メソッドをオーバーライドします。 このメソッドにネットワークSDKオブジェクトのクリーンアップロジックを実装します。

バナー広告

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

インタースティシャル

  1. com.mycompanyname.MyNetworkMediationAdapterクラスにMaxInterstitialAdapterインターフェイスを実装します。
  2. 広告をリクエストするloadInterstitialAd()メソッドをオーバーライドします。広告ロジックに必要なプレースメントIDを取得するには、parameters.getThirdPartyAdPlacementId()メソッドを呼び出します。
  3. ロードされた広告を表示するshowInterstitialAd()メソッドをオーバーライドします。 広告ロジックに必要なプレースメントIDを取得するには、parameters.getThirdPartyAdPlacementId()メソッドを呼び出します。広告が準備できていない場合は、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()メソッドをオーバーライドします。広告ロジックに必要なプレースメントIDを取得するには、parameters.getThirdPartyAdPlacementId()メソッドを呼び出します。
  3. ロードされた広告を表示するshowRewardedAd()メソッドをオーバーライドします。 広告ロジックに必要なプレースメントIDを取得するには、parameters.getThirdPartyAdPlacementId()メソッドを呼び出します。広告が準備できていない場合は、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オブジェクトです。 ユーザーが同意も非同意も示していない場合、値は nullになります。 parametersオブジェクトは各メソッドに渡されます。 プライバシーフラグの値を取得するには、parametersオブジェクトの以下のメソッドを使用します。

MaxAdapterParameters.hasUserConsent()
GDPR同意フラグの場合。 GDPRがユーザーに適用されるかどうかを判断するには、SDK連携ガイド > プラットフォーム > オーバービュー > プライバシーページを参照してください。
MaxAdapterParameters.isDoNotSell()
複数の州をターゲットにした広告の同意フラグの場合。 AppLovinには、ユーザーがこれに該当する地域に属しているかどうかを示すAPIはありません。

iOS

ALMediationAdapter のサブクラスを実装してください。このサブクラスは、メディエーションアダプターとAppLovin MAX SDKの間のインターフェースを有効にします。このインターフェイスは、初期化、バージョン管理、リソースのクリーンアップなど、SDKのさまざまな機能を処理します。

  1. プロジェクトでALMediationAdapterから拡張した.m.hを作成してください。このクラスの名前には、ネットワーク名(例:MyNetworkMediationAdapter)を含める必要があります。
  2. - (void)initializeWithParameters:(id<MAAdapterInitializationParameters>)parameters completionHandler:(void (^)(MAAdapterInitializationStatus NSString *_Nullable))completionHandlerメソッドを実装します。 アドネットワークSDKを初期化するコードを実装してください。 UIで設定されたアプリ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メソッドを実装します。 そのメソッドからメディエーションアダプターのバージョン番号を返すコードを実装します。 AppLovinのすべてのアダプターは、5つの数字からなるバージョン管理方式を使用しています。左から4桁は、ネットワークSDKのバージョンに対応しています。 最後の数字はマイナーバージョン番号を示しており、アダプターのリリースに対応しています。
  5. - (void)destroyメソッドを実装します。 このメソッドにネットワークSDKオブジェクトのクリーンアップロジックを実装します。

バナー広告

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

インタースティシャル

  1. MyNetworkMediationAdapterクラスにMAInterstitialAdapterプロトコルを実装します。
  2. 広告をリクエストする- (void)loadInterstitialAdForParameters:(id<MAAdapterResponseParameters>)parameters andNotify:(id<MAInterstitialAdapterDelegate>)delegateメソッドを宣言します。 広告ロジックに必要なプレースメントIDを取得するには、parameters.thirdPartyAdPlacementIdentifierメソッドを呼び出します。
  3. ロードされた広告を表示する - (void)showInterstitialAdForParameters:(id<MAAdapterResponseParameters>)parameters andNotify:(id<MAInterstitialAdapterDelegate>)delegateメソッドを宣言します。 広告ロジックに必要なプレースメントIDを取得するには、parameters.thirdPartyAdPlacementIdentifierメソッドを呼び出します。広告が準備できていない場合は、-[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;メソッドを宣言します。 広告ロジックに必要なプレースメントIDを取得するには、parameters.thirdPartyAdPlacementIdentifierメソッドを呼び出します。
  3. ロードされた広告を表示する - (void)showRewardedAdForParameters:(id<MAAdapterResponseParameters>)parameters andNotify:(id<MARewardedAdapterDelegate>)delegate;メソッドを宣言します。 広告ロジックに必要なプレースメントIDを取得するには、parameters.thirdPartyAdPlacementIdentifierメソッドを呼び出します。広告が準備できていない場合は、-[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つのブーリアンフラグを提供します。 これらは NSNumberオブジェクトです。 ユーザーが同意または非同意のどちらも示していない場合、値はnilになります。 parametersオブジェクトは各メソッドに渡されます。 プライバシーフラグの値を取得するには、parametersオブジェクトの以下のAPIを使用します。

-[MAAdapterParameters hasUserConsent]
GDPR同意フラグの場合。 GDPRがユーザーに適用されるかどうかを判断するには、SDK連携ガイド > プラットフォーム > オーバービュー > プライバシーページを参照してください。
-[MAAdapterParameters isDoNotSell]
複数の州をターゲットにした広告の同意フラグの場合。 AppLovinには、ユーザーがこれに該当する地域に属しているかどうかを示すAPIはありません。

テスト

カスタムアダプターは、MAX Demo Appを使用してテストできます (SDK連携ガイド > プラットフォーム > ネットワークのテストを参照)。広告リクエストを簡単に取得するには、ウォーターフォール内のプレースメントのCPMを上げてください。

トラブルシューティング

カスタムアダプターがウォーターフォールに期待どおりに含まれていない場合は、次のトラブルシューティングチェックリストを確認してください。

  1. テストモードを無効にします (SDK連携ガイド> プラットフォーム > ネットワークのテスト> テストモードを参照)。
  2. アプリパッケージ名、広告ユニット、SDKキーがすべて一致していることを確認します。
  3. 実機でテストを行います。
  4. ウォーターフォールで優先的に選ばれるように、カスタムネットワークのCPMを十分に高く設定します。