如果您想支持未在 AppLovin MAX Mediation Matrix 中列出的广告平台,您可以编写自定义适配器。 以下说明将向您展示如何执行此操作。
Implement a subclass of com.applovin.mediation.adapters.MediationAdapterBase.
This subclass enables the interface between your mediation adapter and the AppLovin MAX SDK.
That interface handles functions of your SDK such as initialization, versioning, and resource cleanup.
com.applovin.mediation.adapters 包中创建 MediationAdapterBase 的子类。
此类的名称应包含平台名称 (例如,com.mycompanyname.MyNetworkMediationAdapter)。initialize(final MaxAdapterInitializationParameters parameters, final Activity activity, final OnCompletionListener onCompletionListener) 方法。
实现初始化广告平台 SDK 的代码。
如果您需要访问在 UI 中设置的 app 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() method.
Implement code that returns the version number of the mediation adapter from that method.
All AppLovin’s adapters use a five-number versioning scheme:
The leftmost four numbers correspond to the network SDK version.
The last number denotes the minor version number, which refers to the adapter release.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 offers two boolean flags that indicate whether the user provides privacy consent.
They are Boolean objects.
Their value is null if the user has indicated neither consent or no consent.
MAX passes the parameters object into each method.
To get the value of the privacy flags, use the following methods of the parameters object:
MaxAdapterParameters.hasUserConsent()MaxAdapterParameters.isDoNotSell()Implement a subclass of ALMediationAdapter.
This subclass enables the interface between your mediation adapter and the AppLovin MAX SDK.
That interface handles functions of your SDK such as initialization, versioning, and resource cleanup.
ALMediationAdapter 扩展的 .m 和 .h。
此类的名称应包含平台名称 (例如,MyNetworkMediationAdapter)。- (void)initializeWithParameters:(id<MAAdapterInitializationParameters>)parameters completionHandler:(void (^)(MAAdapterInitializationStatus NSString *_Nullable))completionHandler method
Implement code that initializes your ad network SDK.
You can retrieve the app ID set in the UI from parameters.serverParameters[@"app_id"].
This logic executes in parallel with the initialization of the AppLovin SDK.
Call completionHandler after you initialize the ad network, and pass that handler one of the following values:
MAAdapterInitializationStatusInitializingMAAdapterInitializationStatusInitializedSuccessMAAdapterInitializationStatusInitializedFailure(带有相关错误信息)MAAdapterInitializationStatusDoesNotApply(错误信息为 null)MAAdapterInitializationStatusInitializedUnknown- (NSString *)SDKVersion 方法。
实现从该方法返回平台 SDK 版本字符串的代码。- (NSString *)adapterVersion method.
Implement code that returns the version number of the mediation adapter from that method.
All AppLovin’s adapters use a five-number versioning scheme:
The leftmost four numbers correspond to the network SDK version.
The last number denotes the minor version number, which refers to the adapter release.- (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 offers two boolean flags that indicate whether the user provides privacy consent.
They are NSNumber objects.
Their value is nil if the user has indicated neither consent or no consent.
MAX passes the parameters object into each method.
To get the value of the privacy flags, use the following APIs of the parameters object:
-[MAAdapterParameters hasUserConsent]-[MAAdapterParameters isDoNotSell]您可以使用 MAX Demo App 测试自定义适配器 (请参阅 SDK 集成指南 > 平台 > 测试平台)。 要想获得广告请求,请提高瀑布流中广告位的 CPM。
If your custom adapter does not appear in the waterfall as you expect, use the following troubleshooting checklist: