カスタムアダプターの作成
AppLovin MAX メディエーションマトリックスにリストされていないアドネットワークをサポートする場合は、カスタムアダプターを作成できます。次の手順は、それを行う方法を示しています。
Android
com.applovin.mediation.adapters.MediationAdapterBase
のサブクラスを実装してください。このサブクラスは、メディエーションアダプターとAppLovin MAX SDKの間のインターフェースを有効にします。このインターフェイスは、初期化、バージョン管理、リソースのクリーンアップなど、SDKのさまざまな機能を処理します。
- アプリケーションの
com.applovin.mediation.adapters
パッケージにMediationAdapterBase
のサブクラスを作成します。 このクラスの名前には、ネットワーク名 (com.mycompanyname.MyNetworkMediationAdapter
など)を含める必要があります。 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
- アドネットワークSDKの初期化中:
getSdkVersion()
メソッドをオーバーライドします。 そのメソッドからネットワークSDKバージョン文字列を返すコードを実装します。getAdapterVersion()
メソッドをオーバーライドします。 そのメソッドからメディエーションアダプターのバージョン番号を返すコードを実装します。 AppLovinのすべてのアダプターは、5つの数字からなるバージョン管理方式を使用しています。左から4桁は、ネットワークSDKのバージョンに対応しています。 最後の数字はマイナーバージョン番号を示しており、アダプターのリリースに対応しています。onDestroy()
メソッドをオーバーライドします。 このメソッドにネットワークSDKオブジェクトのクリーンアップロジックを実装します。
バナー広告
com.mycompanyname.MyNetworkMediationAdapter
クラスにMaxAdViewAdapter
インターフェイスを実装します。- 広告をリクエストする
loadAdViewAd()
メソッドをオーバーライドします。広告ロジックに必要なプレースメントIDを取得するには、parameters.getThirdPartyAdPlacementId()
メソッドを呼び出します。 - 適切な
MaxAdViewAdapterListener
メソッドを呼び出します。 これらはバナーのライフサイクルイベントについてAppLovin MAX SDKに通知します。- 広告が正常にロードされたら、
MaxAdViewAdapterListener.onAdViewAdLoaded()
を呼び出します。 - 広告のロードに失敗した場合は、適切な
MaxAdapterError
を指定してMaxAdViewAdapterListener.onAdViewAdLoadFailed()
を呼び出します。 - 必要に応じて、次の適切なバナーライフサイクルイベント通知を呼び出します:
onAdViewAdClicked()
、onAdViewAdCollapsed()
、onAdViewAdDisplayed()
、onAdViewAdDisplayFailed()
、onAdViewAdExpanded()
、onAdViewAdHidden()
。
- 広告が正常にロードされたら、
インタースティシャル
com.mycompanyname.MyNetworkMediationAdapter
クラスにMaxInterstitialAdapter
インターフェイスを実装します。- 広告をリクエストする
loadInterstitialAd()
メソッドをオーバーライドします。広告ロジックに必要なプレースメントIDを取得するには、parameters.getThirdPartyAdPlacementId()
メソッドを呼び出します。 - ロードされた広告を表示する
showInterstitialAd()
メソッドをオーバーライドします。 広告ロジックに必要なプレースメントIDを取得するには、parameters.getThirdPartyAdPlacementId()
メソッドを呼び出します。広告が準備できていない場合は、MaxInterstitialAdapterListener.onInterstitialAdDisplayFailed( MaxAdapterError.AD_NOT_READY )
を呼び出します。 - 適切な
MaxInterstitialAdapterListener
メソッドを呼び出します。 インタースティシャルのライフサイクルイベントについてAppLovin MAX SDKに通知します。- 広告が正常にロードされたら、
MaxInterstitialAdapterListener.onInterstitialAdLoaded()
を呼び出します。 - 広告のロードに失敗した場合は、適切な
MaxAdapterError
を指定してMaxInterstitialAdapterListener.onInterstitialAdLoadFailed()
を呼び出します。 - 広告が非表示になった場合は、
MaxInterstitialAdapterListener.onInterstitialAdHidden()
を呼び出します。 - 必要に応じて、次の適切なインタースティシャルライフサイクルイベント通知を呼び出します:
onInterstitialAdClicked()
、onInterstitialAdDisplayFailed()
。
- 広告が正常にロードされたら、
リワード広告
com.mycompanyname.MyNetworkMediationAdapter
クラスにMaxRewardedAdapter
インターフェイスを実装します。- 広告をリクエストする
loadRewardedAd()
メソッドをオーバーライドします。広告ロジックに必要なプレースメントIDを取得するには、parameters.getThirdPartyAdPlacementId()
メソッドを呼び出します。 - ロードされた広告を表示する
showRewardedAd()
メソッドをオーバーライドします。 広告ロジックに必要なプレースメントIDを取得するには、parameters.getThirdPartyAdPlacementId()
メソッドを呼び出します。広告が準備できていない場合は、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
オブジェクトです。
ユーザーが同意も非同意も示していない場合、値は null
になります。
parameters
オブジェクトは各メソッドに渡されます。
プライバシーフラグの値を取得するには、parameters
オブジェクトの以下のメソッドを使用します。
MaxAdapterParameters.hasUserConsent()
- GDPR同意フラグの場合。 GDPRがユーザーに適用されるかどうかを判断するには、SDK連携ガイド > プラットフォーム > オーバービュー > プライバシーページを参照してください。
MaxAdapterParameters.isDoNotSell()
- 複数の州をターゲットにした広告の同意フラグの場合。 AppLovinには、ユーザーがこれに該当する地域に属しているかどうかを示すAPIはありません。
iOS
ALMediationAdapter
のサブクラスを実装してください。このサブクラスは、メディエーションアダプターとAppLovin MAX SDKの間のインターフェースを有効にします。このインターフェイスは、初期化、バージョン管理、リソースのクリーンアップなど、SDKのさまざまな機能を処理します。
- プロジェクトで
ALMediationAdapter
から拡張した.m
と.h
を作成してください。このクラスの名前には、ネットワーク名(例:MyNetworkMediationAdapter
)を含める必要があります。 - (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
- アドネットワークSDKの初期化中:
- (NSString *)SDKVersion
メソッドを実装します。 そのメソッドからネットワークSDKバージョン文字列を返すコードを実装します。- (NSString *)adapterVersion
メソッドを実装します。 そのメソッドからメディエーションアダプターのバージョン番号を返すコードを実装します。 AppLovinのすべてのアダプターは、5つの数字からなるバージョン管理方式を使用しています。左から4桁は、ネットワークSDKのバージョンに対応しています。 最後の数字はマイナーバージョン番号を示しており、アダプターのリリースに対応しています。- (void)destroy
メソッドを実装します。 このメソッドにネットワークSDKオブジェクトのクリーンアップロジックを実装します。
バナー広告
MyNetworkMediationAdapter
クラスにMAAdViewAdapter
プロトコルを実装します。- 広告をリクエストする
- (void)loadAdViewAdForParameters:(id<MAAdapterResponseParameters>)parameters adFormat:(MAAdFormat *)adFormat andNotify:(id<MAAdViewAdapterDelegate>)delegate
メソッドを実装します。 広告ロジックに必要なプレースメントIDを取得するには、parameters.thirdPartyAdPlacementIdentifier
メソッドを呼び出します。 - 適切な
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
メソッドを宣言します。 広告ロジックに必要なプレースメントIDを取得するには、parameters.thirdPartyAdPlacementIdentifier
メソッドを呼び出します。 - ロードされた広告を表示する
- (void)showInterstitialAdForParameters:(id<MAAdapterResponseParameters>)parameters andNotify:(id<MAInterstitialAdapterDelegate>)delegate
メソッドを宣言します。 広告ロジックに必要なプレースメントIDを取得するには、parameters.thirdPartyAdPlacementIdentifier
メソッドを呼び出します。広告が準備できていない場合は、-[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;
メソッドを宣言します。 広告ロジックに必要なプレースメントIDを取得するには、parameters.thirdPartyAdPlacementIdentifier
メソッドを呼び出します。 - ロードされた広告を表示する
- (void)showRewardedAdForParameters:(id<MAAdapterResponseParameters>)parameters andNotify:(id<MARewardedAdapterDelegate>)delegate;
メソッドを宣言します。 広告ロジックに必要なプレースメントIDを取得するには、parameters.thirdPartyAdPlacementIdentifier
メソッドを呼び出します。広告が準備できていない場合は、-[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つのブーリアンフラグを提供します。
これらは NSNumber
オブジェクトです。
ユーザーが同意または非同意のどちらも示していない場合、値はnil
になります。
parameters
オブジェクトは各メソッドに渡されます。
プライバシーフラグの値を取得するには、parameters
オブジェクトの以下のAPIを使用します。
-[MAAdapterParameters hasUserConsent]
- GDPR同意フラグの場合。 GDPRがユーザーに適用されるかどうかを判断するには、SDK連携ガイド > プラットフォーム > オーバービュー > プライバシーページを参照してください。
-[MAAdapterParameters isDoNotSell]
- 複数の州をターゲットにした広告の同意フラグの場合。 AppLovinには、ユーザーがこれに該当する地域に属しているかどうかを示すAPIはありません。
テスト
カスタムアダプターは、MAX Demo Appを使用してテストできます (SDK連携ガイド > プラットフォーム > ネットワークのテストを参照)。広告リクエストを簡単に取得するには、ウォーターフォール内のプレースメントのCPMを上げてください。
トラブルシューティング
カスタムアダプターがウォーターフォールに期待どおりに含まれていない場合は、次のトラブルシューティングチェックリストを確認してください。
- テストモードを無効にします (SDK連携ガイド> プラットフォーム > ネットワークのテスト> テストモードを参照)。
- アプリパッケージ名、広告ユニット、SDKキーがすべて一致していることを確認します。
- 実機でテストを行います。
- ウォーターフォールで優先的に選ばれるように、カスタムネットワークのCPMを十分に高く設定します。