详细实现自定义Adapter的示例可查看:Taku Demo
开发者需要根据自身需求继承相应广告形式的类(参照下表)并重写所有抽象方法,在相应的方法中调用广告平台的API,并通过类成员变量mLoadListener回调加载的结果,通过类成员变量mImpressionListener回调广告展示、点击、关闭等事件结果
广告形式 | 类名 |
---|---|
激励视频 | com.anythink.rewardvideo.unitgroup.api.CustomRewardVideoAdapter |
插屏广告 | com.anythink.interstitial.unitgroup.api.CustomInterstitialAdapter |
横幅广告 | com.anythink.banner.unitgroup.api.CustomBannerAdapter |
原生广告 | com.anythink.nativead.unitgroup.api.CustomNativeAdapter |
开屏广告 | com.anythink.splash.unitgroup.api.CustomSplashAdapter |
如果需要使用自定义Adapter实现Bidding功能,请查看: 自定义高级配置
抽象方法 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
loadCustomNetworkAd | Context context:上下文 Map serverExtra: 服务端配置的自定义参数 Map localExtra: 本次加载传入自定义参数 | void | 实现自定义广告平台的广告的加载逻辑 | 是 | context参数: 对应传入ATRewardVideoAd、ATInterstitial、ATNative、ATBannerView、ATSplashAd的context值。对于开屏广告,context类型为Activity;对于激励视频、插屏、原生(信息流)广告、横幅广告,context类型取决于调用传入ATRewardVideoAd、ATInterstitial、ATNative、ATBannerView的Context serverExtra参数: Taku后台配置的Json字符串中的key-value都可通过serverExtra参数获取到 自定义key-value默认会透传填写的代码位id(key=slot_id) localExtra参数:通过ATRewardVideoAd#setLocalExtra()、ATInterstitial#setLocalExtra()、ATNative#setLocalExtra()、ATBannerView#setLocalExtra()等方法传入的key-value都可通过locaExtra参数获取到 |
destory | - | void | 实现自定义广告平台的销毁逻辑 | 是 | Taku SDK内部会在合适的时机调用此方法销毁广告平台的资源 |
getNetworkPlacementId | - | void | 提供本次加载自定义广告平台的广告位id | 是 | 用于Taku SDK回调方法中的ATAdInfo对象及内部相关逻辑等 |
getNetworkSDKVersion | - | void | 提供本次加载自定义广告平台的SDK版本 | 是 | 用于Taku SDK回调方法中的ATAdInfo对象及内部相关逻辑等 |
setUserDataConsent | Context context: 上下文 boolean isConsent: 用户是否授权 isEUTraffic: 是否是欧盟地区 | boolean | 提供用户授权情况以及是否欧盟的信息给自定义广告平台实现GDPR的设置功能。(如果有实现则返回true,Taku会用于统计记录) | 否(发布欧盟的地区的建议实现) | - |
getNetworkInfoMap | - | Map | 提供自定义广告的自定义信息 | 否 | 在此方法中,可以创建Map,并将一些额外的信息添加到此Map中返回,开发者最终可根据Taku SDK各回调方法中的ATAdInfo对象,通过调用ATAdInfo.getExtInfoMap()方法获取到这些额外信息 |
使用Adapter里的成员变量ATCustomLoadListener实现广告加载结果的回调
回调方法 | 参数说明 | 说明 |
---|---|---|
onAdCacheLoaded | BaseAd... baseAds: 主要是提供给原生广告回调广告对象的,其他广告形式不需要加入参数回调 | 广告内容以及素材加载成功时,调用此方法通知Taku SDK,最终Taku SDK会回调加载成功的方法通知开发者 |
onAdLoadError | String errorCode: 错误码信息 String errorMsg: 详细错误信息 | 广告加载失败时,调用此方法通知Taku SDK,最终Taku SDK会回调加载失败的方法通知开发者 (errorCode及errorMsg会封装到Taku SDK回调方法中的AdError对象中) |
注意:使用成员变量ATCustomLoadListener时候需要做判空处理,因为聚合SDK内部有可能会回收该Listener对象
•开发者只需要继承相关类并重写相关方法,自定义Adapter中的所有方法都不需要开发者进行调用,当Taku后台的广告位下配置好自定义广告平台的广告源后,SDK内部会在合适的时机调用自定义Adapter中的相关方法。
•开发者调用Taku SDK的load API加载广告,Taku SDK会根据后台配置的类名通过反射创建出自定义Adapter的类,并调用loadCustomNetworkAd()进行广告的请求,自定义广告平台的广告加载结果需要通过调用ATCustomLoadListener的方法(onAdCacheLoaded、onAdLoadError)通知Taku SDK,最终Taku SDK会通过Taku的回调方法通知开发者
•自定义广告平台加载广告时所需要的参数(AppID、AppKey、PlacementID等)需以Json字符串的形式配置在Taku后台的该广告平台的广告源中例如:
{
"app_id":"2004533529842888",
"unit_id":"VID_HD_16_9_15S_APP_INSTALL#2004533529842888_2110107055952201"
}
Taku SDK拉取到后台策略时,会将此Json字符串转化为Map,传给loadCustomNetworkAd(Context context, Map
•开发者调用Taku SDK的isAdReady API时,会调用到自定义Adapter的isAdReady()方法
•开发者调用Taku SDK的show API时,会调用到自定义Adapter的isAdReady()、show(Activity activity)方法
•Taku后台添加自定义广告平台时,Adapter类名需配置全路径类名(包名+类名),否则加载广告时Adapter类将不能正常被创建
•因为SDK内部是通过反射new出Adapter的类,所以在构建release包时,必须确保Adapter类不能被混淆。混淆规则示例如下:
# 将 改为开发者自己的Adapter类名
-keep class { *;}
-keepclassmembers public class {
public *;
}
•遇到任何问题,可查阅 如何测试广告 寻找解决方案