Android自定义平台适配器对接文档
1. 概述
尊敬的开发者,欢迎您使用本平台广告SDK自定义适配广告平台。通过本文档,您可以在几分钟之内轻松完成自定义广告平台对接过程。
操作系统及要求:使用Android Studio;Android4.1及以上(minSdkVersion 16及以上)主要按所适配渠道最低版本要求;
自定义适配器平台支持广告类型:开屏,横幅,插屏,全屏视频,激励视频,信息流等;
Demo下载地址: https://gitee.com/admobile/Android-custom-platform-adapter
2. 添加SDK到工程中
2.1 添加仓库地址
首先需要在项目的build.gradle文件中引入如下配置:
allprojects {
repositories {
...
google()
jcenter()
mavenCentral()
// 添加以下仓库地址
maven { url "https://maven.admobile.top/repository/maven-releases/" }
}
}
2.2 添加ADSuyiSdk和需要的AdapterSdk到主项目中
// ADSuyiSdk核心库是必须导入的
implementation 'cn.admobiletop.adsuyi.ad:core-alpha:3.4.0.10141'
// common库是必须导入的,请保持和Demo中版本一致
implementation 'com.admobile:common:1.3.2'
// oaid(用于获取设备标识)
implementation(name: 'oaid_sdk_1.0.25', ext: 'aar')
// oaid适配器(ADSuyi用于获取oaid)
implementation 'cn.admobiletop.adsuyi.ad:oaid:1.0.25.08021'
// 艾狄墨搏AdapterSdk,必须的`
implementation 'cn.admobiletop.adsuyi.ad.adapter:admobile:5.0.1.10223'
2.3 添加ADSuyiSdk核心库和必要的库到你所适配的核心库中
dependencies {
// ⚠️使用编译时依赖 避免和自己项目本身的依赖冲突,同时不影响适配器的编译⚠️
compileOnly 'com.android.support:appcompat-v7:28.0.0'
// ADSuyi核心库
compileOnly 'cn.admobiletop.adsuyi.ad:core-alpha:3.4.0.10141'
// 第三方渠道广告aar(优量汇aar)
compileOnly (name: 'gdt-4.420.1290', ext: 'aar')
}
2.4 添加渠道的混淆配置
根据渠道提供的混淆进行配置。
2.5 配置渠道FileProvider配置
根据渠道提供的Provider进行配置,否则会影响到下载类广告。
3. 在ADmobile运营后台增加自定义适配平台
1、广告平台:因ADSuyiSDK与运营后台的通信是依赖于双端协定的平台名称来进行逻辑处理,新增自定义平台尚未开通开发者后台自主添加功能,如有需要请联系ADmobile运营同学协助添加;需谨记在运营后台添加的广告平台名称字段,该字段在自定义适配器开发时需要用到且必须与后台所填一致,否则会有广告加载异常问题;在后台添加新平台时需要添加该三方平台的申请的AppId
和AppKey
,该参数用于SDK端三方平台SDK初始化;
2、广告类型:因自定义平台适配器不能增加新的广告类型,故只能使用现有广告类型来进行平台广告的添加,在添加自定义平台广告位时,需严格按照平台的广告类型创建广告位id,现有广告类型(模板,自渲染,模板2.0等),如不清楚平台所示广告为何种类型时,请咨询我们技术同学;自定义平台适配器开发时,需明确该类为何种广告类型的加载器;
3、平台及广告加载器注册:自定义适配器平台开发中,需要继承对应的初始化父类及广告类型适配器父类,并应在load方法中调用注册方法来告知主SDK注册的平台及广告类型;
4、初始化类:自定义平台初始化类继承自自定义适配平台SDK,应在父类开放方法实现中来初始化三方平台SDK;
5、广告加载类:自定义适配平台加载器类中,需要继承自适配平台SDK依赖库对应广告类型父类,并在子类中实现响应加载方法及展示方法(部分广告类型无展示方法,仅需实现请求方法且务必正确调用相应方法确保广告正常展示),方法中有广告请求参数adapterParams
,根据平台加载广告所需参数从adapterParams
拿到响应参数;
6、广告回调:因ADmobile需要根据平台回调时机来统计广告相关数据,故开发者在适配器开发过程中,需要根据平台广告回调中,调用listener
方法,告知主SDK端进行数据统计(如:-listener.onAdReceive
广告获取成功时调用此方法),需严格按照对应回调调用相应方法;
4. 自定义适配器平台示例
以下自定义广告适配示例采用已适配平台:优量汇(gdt);demo中已适配穿山甲(toutiao),优量汇(gdt)俩平台;
5. 广告平台的初始化
新建项目时需要注意包名,必须按照如下规则进行设置,这里以优量汇为例,其中gdt为所适配广告平台的别名。
cn.admobiletop.adsuyi.adapter.gdt
在gdt包目录下新建ADSuyiIniter类,并实现ADSuyiAdapterIniter接口:
ADSuyiAdapterIniter
接口说明
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
init | ADSuyiPlatform platform:平台初始化配置信息; ADSuyiAdapterIniterExtParams extParams平台初始化额外参数。 | void | 获取渠道配置信息,如appId,appKey | 是 | 需要在该位置初始化广告平台。 |
inited | - | Boolean | ADSuyi核心库根据该方法判断渠道是否初始化完毕 | 是 | |
getSuyiAdapterLoader | String adType:请求广告类型; ADSuyiAdType.TYPE_SPLASH 开屏广告 ADSuyiAdType.TYPE_BANNER 横幅广告 ADSuyiAdType.TYPE_FLOW 信息流广告 ADSuyiAdType.TYPE_REWARD_VOD 激励视频广告 ADSuyiAdType.TYPE_FULLSCREEN_VOD 全屏视频广告 ADSuyiAdType.TYPE_INTERSTITIAL 插屏广告 | ADSuyiAdapterLoader | ADSuyi核心库根据该方法获取适配器加载广告的Loader类,从而实现广告的价值 | 是 | |
getSupportADSuyiSdkVersions | - | List | 获取当前广告平台适配器与ADSuyi核心库所匹配的版本号 | 是 | {"3.3.2.08201"} |
getAdapterVersion | - | String | 获取当前适配器所适配的版本 | 是 | 请对build.gradle中SDK_VERSION_NAME参数进行修改 |
ADSuyiPlatform
、ADSuyiInitConfig
、ADSuyiSdk
方法说明
对象 | 方法 | 返回值 | 说明 |
---|---|---|---|
ADSuyiPlatform | getPlatform | String | 获取平台名称,与cn.admobiletop.adsuyi.adapter.gdt路径中的gdt相对应 |
getAppId | String | 获取下发的平台初始化AppId | |
getAppKey | String | 获取下发的平台初始化AppKey | |
ADSuyiInitConfig | isAgreePrivacyStrategy | Boolean | 是否同意隐私政策 |
debug | boolean | 是否为测试模式 | |
isCanUseLocation | boolean | 能否使用定位数据 | |
isCanUsePhoneState | boolean | 能否使用设备信息 | |
isCanUseWifiState | boolean | 能否使用wifi信息 | |
isCanUseOaid | boolean | 能否使用OAID | |
ADSuyiSdk | getContext | Context | 上下文对象 |
getDownloadTip | int | 下载类广告提示模式 | |
getOAID | String | 获取OAID | |
6. 广告平台广告的对接
6.1 开屏广告
创建SplashAdLoader开屏广告加载器,并实现ADSuyiAdapterLoader<ADSuyiSplashAd, ADSuyiSplashAdListener>接口:
ADSuyiAdapterLoader<ADSuyiSplashAd, ADSuyiSplashAdListener>接口说明
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
loadAd | ADSuyiSplashAd splashAd: Suyi开屏广告对象,其中包含上下文类; ADSuyiAdapterParams adapterParams:广告位配置信息 ADSuyiSplashAdListener adListener:开发者传递过来的广告监听 | void | 获取当前开发者传入的上下文对象,服务端广告位配置信息,开发者传入的广告监听。 | 是 | 用于广告的加载。 |
onResumed | - | void | 目前不做处理 | 否 | |
onPaused | - | void | 目前不做处理 | 否 | |
release | - | void | 释放广告对象 | 是 | ADSuyi广告对象被释放会调用该方法 |
loadAd方法内部具体实现 |
/**
* 加载开屏广告
* @param splashAd
* @param adapterParams
* @param adListener
*/
@Override
public void loadAd(ADSuyiSplashAd splashAd, ADSuyiAdapterParams adapterParams, ADSuyiSplashAdListener adListener) {
// 首先一定要进行如下判断,避免出现空指针异常
if (!ADSuyiAdUtil.isReleased(splashAd)
&& splashAd.getContainer() != null
&& adapterParams != null
&& adapterParams.getPlatform() != null
&& adapterParams.getPlatformPosId() != null
&& adListener != null) {
ADSuyiPlatformPosId adSuyiPlatformPosId = adapterParams.getPlatformPosId();
// 广告加载的Activity
Activity activity = splashAd.getActivity();
// 广告布局容器
ADSuyiSplashAdContainer container = splashAd.getContainer();
// 广告平台广告位ID
String platformPosId = adSuyiPlatformPosId.getPlatformPosId();
loadSplashAd(activity, container, platformPosId, adListener);
}
}
/**
* 加载优量汇开屏广告
* @param activity 广告展示的Activity
* @param container 广告布局容器
* @param platformPosId 广告平台广告位ID
* @param adListener 广告监听回调
*/
private void loadSplashAd(Activity activity, ADSuyiSplashAdContainer container, String platformPosId, ADSuyiSplashAdListener adListener) {
// 构造开屏监听类,实现优量汇开屏广告回调接口
splashAdListener = new SplashAdListener(container, platformPosId, adListener);
// 以下是优量汇加载广告逻辑
// 构造优量汇SplashAD对象,传入必要的参数
SplashAD splashAD = new SplashAD(activity
, platformPosId
, splashAdListener);
// 加载并展示优量汇开屏广告
splashAD.fetchAndShowIn(container);
}
SplashAdListener 构造开屏监听类,将该监听设置到广告渠道设置监听回调方法内。注意:需要继承 BaseAdListener,实现所适配渠道的开屏广告监听回调,并在回调中调用事先set的adListener内的方法。
BaseAdListener类需要实现的方法说明
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
SplashAdListener | @param platformPosId 广告平台id @param adListener 开屏监听器 | SplashAdListener | 构造监听类,用于打通广告渠道与ADSuyi间的回调 | 是 | - |
release | - | void | 在这里可以对一些对象进行销毁 | 是 | - |
SplashAdListener需要实现三方广告监听回调,这里以优量汇为例子,需要实现优量汇SplashADListener监听:
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
onADReceive | - | void | 优量汇广告成功展示回调,在该接口中需要开发者创建BaseAdInfo对象,并调用ADSuyiSplashAdListener onAdReceive回调,用于提示开发者广告获取成功。 | 是 | |
... | - | ... | 其它接口回调逻辑请参考适配器demo | ... | ... |
6.2 横幅广告
创建 BannerAdLoader 开屏广告加载器,并实现 ADSuyiAdapterLoader<ADSuyiBannerAd, ADSuyiBannerAdListener> 接口:
ADSuyiAdapterLoader<ADSuyiBannerAd, ADSuyiBannerAdListener>接口说明
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
loadAd | ADSuyiBannerAd bannerAd: Suyi横幅广告对象,其中包含上下文类; ADSuyiAdapterParams adapterParams:广告位配置信息 ADSuyiBannerAdListener adListener:开发者传递过来的广告监听 | void | 获取当前开发者传入的上下文对象,服务端广告位配置信息,开发者传入的广告监听。 | 是 | 用于广告的加载。 |
onResumed | - | void | onResumed根据Activity生命周期回调 | 否 | |
onPaused | - | void | onPaused根据Activity生命周期回调 | 否 | |
release | - | void | 释放广告对象 | 是 | ADSuyi广告对象被释放会调用该方法 |
loadAd方法内部具体实现 |
/**
* 加载横幅广告
* @param bannerAd
* @param adapterParams
* @param adListener
*/
@Override
public void loadAd(ADSuyiBannerAd bannerAd, ADSuyiAdapterParams adapterParams, ADSuyiBannerAdListener adListener) {
if (!ADSuyiAdUtil.isReleased(bannerAd)
&& bannerAd.getContainer() != null
&& adapterParams != null
&& adapterParams.getPlatform() != null
&& adapterParams.getPlatformPosId() != null
&& adListener != null) {
ADSuyiPlatformPosId adSuyiPlatformPosId = adapterParams.getPlatformPosId();
// 广告加载的Activity
Activity activity = bannerAd.getActivity();
// 广告布局容器
RelativeLayout container = bannerAd.getContainer();
// 广告平台广告位ID
String platformPosId = adSuyiPlatformPosId.getPlatformPosId();
loadBannerAd(activity, container, platformPosId, adListener);
}
}
/**
* 加载优量汇横幅广告
* @param activity 广告展示的Activity
* @param container 广告布局容器
* @param platformPosId 广告平台广告位ID
* @param adListener 广告监听回调
*/
private void loadBannerAd(Activity activity, RelativeLayout container, String platformPosId, ADSuyiBannerAdListener adListener) {
// 构造横幅监听类,实现优量汇横幅广告回调接口
bannerAdListener = new BannerAdListener(platformPosId, adListener);
// 以下是优量汇加载广告逻辑
// 构造优量汇UnifiedBannerView,传入必要的参数
unifiedBannerView = new UnifiedBannerView(activity
, platformPosId
, bannerAdListener);
// 移除开发者传入的banner控件中的布局
container.removeAllViews();
// 将优量汇unifiedBannerView添加进开发者容器中
container.addView(unifiedBannerView);
// 加载并展示优量汇开屏广告
unifiedBannerView.loadAD();
}
BannerAdListener 构造横幅监听类,将该监听设置到广告渠道设置监听回调方法内。注意:需要继承 BaseAdListener,实现所适配渠道的横幅广告监听回调,并在回调中调用事先set的adListener内的方法。
BaseAdListener类需要实现的方法说明
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
BannerAdListener | @param platformPosId 广告平台id @param adListener 横幅监听器 | SplashAdListener | 构造监听类,用于打通广告渠道与ADSuyi间的回调 | 是 | 这里要将代码进行优化,代码要改 |
release | - | void | 在这里可以对一些对象进行销毁 | 是 | - |
BannerAdListener需要实现三方广告监听回调,这里以优量汇为例子,需要实现优量汇UnifiedBannerADListener监听:
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
onADReceive | - | void | 优量汇广告加载成功回调,在该接口中需要开发者创建BaseAdInfo对象,并调用ADSuyiBannerAdListener onAdReceive回调,用于提示开发者广告获取成功。 | 是 | |
... | - | ... | 其它接口回调逻辑请参考适配器demo | ... | ... |
6.3 插屏广告
创建 InterstitialAdLoader 插屏广告加载器,并实现 ADSuyiAdapterLoader<ADSuyiInterstitialAd, ADSuyiInterstitialAdListener> 接口:
ADSuyiAdapterLoader<ADSuyiInterstitialAd, ADSuyiInterstitialAdListener>接口说明
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
loadAd | ADSuyiInterstitialAd interstitialAd: Suyi插屏广告对象,其中包含上下文类; ADSuyiAdapterParams adapterParams:广告位配置信息 ADSuyiInterstitialAdListener adListener:开发者传递过来的广告监听 | void | 获取当前开发者传入的上下文对象,服务端广告位配置信息,开发者传入的广告监听。 | 是 | 用于广告的加载。 |
onResumed | - | void | 目前不做处理 | 否 | |
onPaused | - | void | 目前不做处理 | 否 | |
release | - | void | 释放广告对象 | 是 | ADSuyi广告对象被释放会调用该方法 |
loadAd方法内部具体实现 |
/**
* 加载插屏广告
* @param interstitialAd
* @param adapterParams
* @param adListener
*/
@Override
public void loadAd(ADSuyiInterstitialAd interstitialAd, ADSuyiAdapterParams adapterParams, ADSuyiInterstitialAdListener adListener) {
if (!ADSuyiAdUtil.isReleased(interstitialAd)
&& adapterParams != null
&& adapterParams.getPlatform() != null
&& adapterParams.getPlatformPosId() != null
&& adListener != null) {
ADSuyiPlatformPosId adSuyiPlatformPosId = adapterParams.getPlatformPosId();
// 广告加载的Activity
Activity activity = interstitialAd.getActivity();
// 广告平台广告位ID
String platformPosId = adSuyiPlatformPosId.getPlatformPosId();
loadInterstitialAD(activity, platformPosId, adListener);
}
}
/**
* 加载优量汇插屏广告
* @param activity 广告加载广告的Activity
* @param platformPosId 广告平台广告位ID
* @param adListener 广告监听回调
*/
private void loadInterstitialAD(Activity activity, String platformPosId, ADSuyiInterstitialAdListener adListener) {
// 构造插屏广告监听类,实现优量汇插屏广告回调接口
interstitialAdListener = new InterstitialAdListener(platformPosId, adListener);
// 以下是优量汇加载广告逻辑
// 构造优量汇UnifiedInterstitialAD对象,传入必要的参数
unifiedInterstitialAD = new UnifiedInterstitialAD(activity
, platformPosId
, interstitialAdListener);
// 向封装的插屏监听类中传入unifiedInterstitialAD,用于返回给用户进行插屏的播放
interstitialAdListener.setUnifiedInterstitialAD(unifiedInterstitialAD);
// 加载优量汇插屏广告
unifiedInterstitialAD.loadAD();
}
InterstitialAdListener 构造插屏监听类,将该监听设置到广告渠道设置监听回调方法内。注意:需要继承 BaseAdListener,实现所适配渠道的插屏广告监听回调,并在回调中调用事先set的adListener内的方法。
BaseAdListener类需要实现的方法说明
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
InterstitialAdListener | @param platformPosId 广告平台id @param adListener 插屏监听器 | InterstitialAdListener | 构造监听类,用于打通广告渠道与ADSuyi间的回调 | 是 | - |
release | - | void | 在这里可以对一些对象进行销毁 | 是 | - |
InterstitialAdListener需要实现三方广告监听回调,这里以优量汇为例子,需要实现优量汇UnifiedInterstitialADListener监听:
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
onADReceive | - | void | 优量汇广告加载成功回调,在该接口中需要开发者创建InterstitialAdInfo对象,并调用ADSuyiInterstitialAdListener onAdReceive回调,用于提示开发者广告获取成功。 | 是 | |
... | - | ... | 其它接口回调逻辑请参考适配器demo | ... | ... |
InterstitialAdInfo 插屏广告内容对象,需要继承 BaseAdInfo<ADSuyiInterstitialAdListener, E>,其中E为渠道的插屏视频广告对象,并实现 ADSuyiInterstitialAdInfo 接口
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
showInterstitial | Activity activity:展示插屏广告的activity | void | 打开插屏广告 | 是 | |
hasShown | - | boolean | 广告是否已展示 | 是 | 渠道的插屏视频广告对象如果有相应接口,可以在该方法中进行调用 |
hasExpired | - | boolean | 广告是否过期 | 是 | 渠道的插屏视频广告对象如果有相应接口,可以在该方法中进行调用 |
isReady | - | boolean | 广告是否可播放 | 是 | 渠道的插屏视频广告对象如果有相应接口,可以在该方法中进行调用 |
releaseAdapter | - | boolean | 广告释放 | 是 | 在该方法内将AdapterAdInfo置为空 |
6.4 激励视频广告
创建 RewardVodAdLoader 插屏广告加载器,并实现 ADSuyiAdapterLoader<ADSuyiRewardVodAd, ADSuyiRewardVodAdListener> 接口:
ADSuyiAdapterLoader<ADSuyiRewardVodAd, ADSuyiRewardVodAdListener>接口说明
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
loadAd | ADSuyiRewardVodAd rewardVodAd: Suyi激励视频广告对象,其中包含上下文类; ADSuyiAdapterParams adapterParams:广告位配置信息 ADSuyiRewardVodAdListener adListener:开发者传递过来的广告监听 | void | 获取当前开发者传入的上下文对象,服务端广告位配置信息,开发者传入的广告监听。 | 是 | 用于广告的加载。 |
onResumed | - | void | 目前不做处理 | 否 | |
onPaused | - | void | 目前不做处理 | 否 | |
release | - | void | 释放广告对象 | 是 | ADSuyi广告对象被释放会调用该方法 |
loadAd方法内部具体实现 |
/**
* 加载激励视频广告
* @param rewardVodAd
* @param adapterParams
* @param adListener
*/
@Override
public void loadAd(ADSuyiRewardVodAd rewardVodAd, ADSuyiAdapterParams adapterParams, ADSuyiRewardVodAdListener adListener) {
if (!ADSuyiAdUtil.isReleased(rewardVodAd)
&& adapterParams != null
&& adapterParams.getPlatform() != null
&& adapterParams.getPlatformPosId() != null
&& adListener != null) {
ADSuyiPlatformPosId adSuyiPlatformPosId = adapterParams.getPlatformPosId();
// 激励视频广告加载的Activity
Activity activity = rewardVodAd.getActivity();
// 激励视频广告平台广告位ID
String platformPosId = adSuyiPlatformPosId.getPlatformPosId();
loadRewardVideoAD(activity, platformPosId, adListener);
}
}
/**
* 加载优量汇激励视频广告
* @param activity 广告加载广告的Activity
* @param platformPosId 广告平台广告位ID
* @param adListener 广告监听回调
*/
private void loadRewardVideoAD(Activity activity, String platformPosId, ADSuyiRewardVodAdListener adListener) {
// 构造激励视频监听类,实现优量汇激励视频广告回调接口
rewardVodAdListener = new RewardVodAdListener(platformPosId, adListener);
// 以下是优量汇加载广告逻辑
// 构造优量汇RewardVideoAD对象,传入必要的参数
RewardVideoAD rewardVideoAD = new RewardVideoAD(activity
, platformPosId
, rewardVodAdListener);
// 向封装的激励视频监听类中传入rewardVideoAD,用于返回给用户进行激励视频的播放
rewardVodAdListener.setRewardVideoAD(rewardVideoAD);
// 加载优量汇激励视频广告
rewardVideoAD.loadAD();
}
RewardVodAdListener 构造激励视频监听类,将该监听设置到广告渠道设置监听回调方法内。注意:需要继承 BaseAdListener,实现所适配渠道的插屏广告监听回调,并在回调中调用事先set的adListener内的方法。
BaseAdListener类需要实现的方法说明
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
RewardVodAdListener | @param platformPosId 广告平台id @param adListener 激励视频监听器 | RewardVodAdListener | 构造监听类,用于打通广告渠道与ADSuyi间的回调 | 是 | - |
release | - | void | 在这里可以对一些对象进行销毁 | 是 | - |
RewardVodAdListener 需要实现三方广告监听回调,这里以优量汇为例子,需要实现优量汇 RewardVideoADListener 监听:
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
onADLoad | - | void | 优量汇广告加载成功回调,在该接口中需要开发者创建 RewardVodAdInfo 对象,并调用 ADSuyiRewardVodAdListener onAdReceive 回调,用于提示开发者广告获取成功。 | 是 | |
... | - | ... | 其它接口回调逻辑请参考适配器demo | ... | ... |
RewardVodAdInfo 插屏广告内容对象,需要继承 BaseAdInfo<ADSuyiRewardVodAdListener, E>,其中E为渠道的插屏视频广告对象,并实现 ADSuyiRewardVodAdInfo 接口
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
showRewardVod | Activity activity:展示插屏广告的activity | void | 打开激励视频广告 | 是 | |
hasShown | - | boolean | 广告是否已展示 | 是 | 渠道的激励视频广告对象如果有相应接口,可以在该方法中进行调用 |
hasExpired | - | boolean | 广告是否过期 | 是 | 渠道的激励视频广告对象如果有相应接口,可以在该方法中进行调用 |
isReady | - | boolean | 广告是否可播放 | 是 | 渠道的激励视频广告对象如果有相应接口,可以在该方法中进行调用 |
releaseAdapter | - | boolean | 广告释放 | 是 | 在该方法内将AdapterAdInfo置为空 |
6.5 全屏视频广告
创建 FullScreenVodAdLoader 插屏广告加载器,并实现 ADSuyiAdapterLoader<ADSuyiFullScreenVodAd, ADSuyiFullScreenVodAdListener> 接口:
ADSuyiAdapterLoader<ADSuyiFullScreenVodAd, ADSuyiFullScreenVodAdListener>接口说明
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
loadAd | ADSuyiFullScreenVodAd fullScreenVodAd: Suyi全屏视频广告对象,其中包含上下文类; ADSuyiAdapterParams adapterParams:广告位配置信息 ADSuyiFullScreenVodAdListener adListener:开发者传递过来的广告监听 | void | 获取当前开发者传入的上下文对象,服务端广告位配置信息,开发者传入的广告监听。 | 是 | 用于广告的加载。 |
onResumed | - | void | 目前不做处理 | 否 | |
onPaused | - | void | 目前不做处理 | 否 | |
release | - | void | 释放广告对象 | 是 | ADSuyi广告对象被释放会调用该方法 |
loadAd方法内部具体实现 |
/**
* 加载全屏视频广告
* @param fullScreenVodAd
* @param adapterParams
* @param adListener
*/
@Override
public void loadAd(ADSuyiFullScreenVodAd fullScreenVodAd, ADSuyiAdapterParams adapterParams, ADSuyiFullScreenVodAdListener adListener) {
if (!ADSuyiAdUtil.isReleased(fullScreenVodAd)
&& adapterParams != null
&& adapterParams.getPlatform() != null
&& adapterParams.getPlatformPosId() != null
&& adListener != null) {
ADSuyiPlatformPosId adSuyiPlatformPosId = adapterParams.getPlatformPosId();
// 广告加载的Activity
Activity activity = fullScreenVodAd.getActivity();
// 广告平台广告位ID
String platformPosId = adSuyiPlatformPosId.getPlatformPosId();
loadFullScreenAd(activity, platformPosId, adListener);
}
}
/**
* 加载优量汇全屏视频广告
* @param activity 广告加载广告的Activity
* @param platformPosId 广告平台广告位ID
* @param adListener 广告监听回调
*/
private void loadFullScreenAd(Activity activity, String platformPosId, ADSuyiFullScreenVodAdListener adListener) {
// 构造全屏视频监听类,实现优量汇全屏视频广告回调接口
fullScreenVodAdListener = new FullScreenVodAdListener(platformPosId, adListener);
// 以下是优量汇加载广告逻辑
// 构造优量汇UnifiedInterstitialAD对象,传入必要的参数
unifiedInterstitialAD = new UnifiedInterstitialAD(activity
, platformPosId
, fullScreenVodAdListener);
// 向封装的全屏视频监听类中传入unifiedInterstitialAD,用于返回给用户进行全屏视频的播放
fullScreenVodAdListener.setUnifiedInterstitialAD(unifiedInterstitialAD);
// 加载优量汇全屏视频广告
unifiedInterstitialAD.loadFullScreenAD();
}
FullScreenVodAdListener 构造全屏视频监听类,将该监听设置到广告渠道设置监听回调方法内。注意:需要继承 BaseAdListener,实现所适配渠道的插屏广告监听回调,并在回调中调用事先set的adListener内的方法。
BaseAdListener类需要实现的方法说明
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
RewardVodAdListener | @param platformPosId 广告平台id @param adListener 激励视频监听器 | RewardVodAdListener | 构造监听类,用于打通广告渠道与ADSuyi间的回调 | 是 | - |
release | - | void | 在这里可以对一些对象进行销毁 | 是 | - |
RewardVodAdListener 需要实现三方广告监听回调,这里以优量汇为例子,需要实现优量汇 RewardVideoADListener 监听:
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
onADLoad | - | void | 优量汇广告加载成功回调,在该接口中需要开发者创建 RewardVodAdInfo 对象,并调用 ADSuyiRewardVodAdListener onAdReceive 回调,用于提示开发者广告获取成功。 | 是 | |
... | - | ... | 其它接口回调逻辑请参考适配器demo | ... | ... |
RewardVodAdInfo 插屏广告内容对象,需要继承 BaseAdInfo<ADSuyiFullScreenVodAdListener, E>,其中E为渠道的全屏视频广告对象,并实现 ADSuyiFullScreenVodAdInfo 接口
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
showFullScreenVod | Activity activity:展示插屏广告的activity | void | 打开全屏视频广告 | 是 | |
hasShown | - | boolean | 广告是否已展示 | 是 | 渠道的全屏视频广告对象如果有相应接口,可以在该方法中进行调用 |
hasExpired | - | boolean | 广告是否过期 | 是 | 渠道的全屏视频广告对象如果有相应接口,可以在该方法中进行调用 |
isReady | - | boolean | 广告是否可播放 | 是 | 渠道的全屏视频广告对象如果有相应接口,可以在该方法中进行调用 |
releaseAdapter | - | boolean | 广告释放 | 是 | 在该方法内将AdapterAdInfo置为空 |
6.6 信息流广告
创建 NativeAdLoader 插屏广告加载器,并实现 ADSuyiAdapterLoader<ADSuyiNativeAd, ADSuyiNativeAdListener> 接口:
ADSuyiAdapterLoader<ADSuyiNativeAd, ADSuyiNativeAdListener> 接口说明
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
loadAd | ADSuyiNativeAd nativeAd: Suyi信息流广告对象,其中包含上下文类; ADSuyiAdapterParams adapterParams:广告位配置信息 ADSuyiNativeAdListener adListener:开发者传递过来的广告监听 | void | 获取当前开发者传入的上下文对象,服务端广告位配置信息,开发者传入的广告监听。 | 是 | 用于广告的加载。 |
onResumed | - | void | 目前不做处理 | 否 | |
onPaused | - | void | 目前不做处理 | 否 | |
release | - | void | 释放广告对象 | 是 | ADSuyi广告对象被释放会调用该方法 |
loadAd方法内部具体实现 |
/**
* 加载信息流广告
* @param nativeAd
* @param adapterParams
* @param adListener
*/
@Override
public void loadAd(ADSuyiNativeAd nativeAd, ADSuyiAdapterParams adapterParams, ADSuyiNativeAdListener adListener) {
if (!ADSuyiAdUtil.isReleased(nativeAd)
&& adapterParams != null
&& adapterParams.getPlatform() != null
&& adapterParams.getPlatformPosId() != null
&& adListener != null) {
ADSuyiPlatformPosId adSuyiPlatformPosId = adapterParams.getPlatformPosId();
// 广告加载的Activity
Activity activity = nativeAd.getActivity();
// 广告平台广告位ID
String platformPosId = adSuyiPlatformPosId.getPlatformPosId();
if (ADSuyiConfig.RenderType.RENDER_TYPE_NATIVE == adSuyiPlatformPosId.getRenderType()) {
loadNativeAd(activity, platformPosId, adapterParams.getCount(), adListener);
} else {
loadNativeExpressAd(activity, platformPosId, adapterParams.getCount(), adListener);
}
}
}
/**
* 加载优量汇模板信息流广告
* @param activity 广告加载广告的Activity
* @param platformPosId 广告平台广告位ID
* @param count 广告平台请求广告数量
* @param adListener 广告监听回调
*/
private void loadNativeExpressAd(Activity activity, String platformPosId, int count, ADSuyiNativeAdListener adListener) {
// 构造信息流监听类,实现优量汇信息流广告回调接口
nativeExpressAdListener = new NativeExpressAdListener(platformPosId, adListener);
// 以下是优量汇加载广告逻辑
// 构造优量汇NativeExpressAD对象,传入必要的参数
NativeExpressAD nativeExpressAD = new NativeExpressAD(activity
, new ADSize(ADSize.FULL_WIDTH, ADSize.AUTO_HEIGHT)
, platformPosId
, nativeExpressAdListener);
// 加载优量汇信息流模板广告
nativeExpressAD.loadAD(count);
}
/**
* 加载优量汇原生自渲染广告
* @param activity 广告加载广告的Activity
* @param platformPosId 广告平台广告位ID
* @param count 广告平台请求广告数量
* @param adListener 广告监听回调
*/
private void loadNativeAd(Activity activity, String platformPosId, int count, ADSuyiNativeAdListener adListener) {
// 构造信息流监听类,实现优量汇信息流广告回调接口
nativeAdListener = new NativeAdListener(platformPosId, adListener);
// 以下是优量汇加载广告逻辑
// 构造优量汇NativeExpressAD对象,传入必要的参数
NativeUnifiedAD nativeUnifiedAd = new NativeUnifiedAD(activity
, platformPosId
, nativeAdListener);
// 加载优量汇信息流原生自渲染广告
nativeUnifiedAd.loadData(count);
}
6.6.1 信息流模板广告
NativeExpressAdListener 构造信息流模板监听类,将该监听设置到广告渠道设置监听回调方法内。注意:需要继承 BaseAdListener,实现所适配渠道的信息流模板广告监听回调,并在回调中调用事先set的adListener内的方法。
BaseAdListener类需要实现的方法说明
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
NativeExpressAdListener | @param platformPosId 广告平台id @param adListener 信息流模板监听器 | NativeExpressAdListener | 构造监听类,用于打通广告渠道与ADSuyi间的回调 | 是 | - |
release | - | void | 在这里可以对一些对象进行销毁 | 是 | - |
NativeExpressAdListener 需要实现三方广告监听回调,这里以优量汇为例子,需要实现优量汇 NativeExpressAD.NativeExpressADListener 监听:
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
onADLoaded | List nativeExpressADViewList:返回了可以用来展示广告的 NativeExpressADView | void | 优量汇广告加载成功回调,在该接口中需要开发者创建 List 数组,将NativeExpressADView循环放到ADSuyiNativeAdInfo对象中,并调用 ADSuyiNativeAdListener onAdReceive 回调,用于提示开发者广告获取成功。 | 是 | |
... | - | ... | 其它接口回调逻辑请参考适配器demo | ... | ... |
NativeExpressAdInfo 信息流模板广告内容对象,需要继承 BaseAdInfo<ADSuyiNativeAdListener, E>,其中E为渠道的信息流模板广告对象,并实现 ADSuyiNativeExpressAdInfo和NativeExpressMediaListener 接口
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
isNativeExpress | - | boolean | 是否为模板广告 | 是 | 请直接返回true |
isVideo | - | boolean | 是否为带视频的模板广告 | 是 | 渠道的信息流模板广告对象如果有相应接口,可以在该方法中进行调用 |
setVideoListener | - | void | 设置信息流模板广告带视频情况时的监听回调 | 否 | 有需求的话可以进行设置 |
getNativeExpressAdView | ViewGroup container:需要传入广告容器 | View | 返回广告容器,需要在内部将模板广告view add到container中并返回 | 是 | - |
render | ViewGroup viewGroup:需要传入广告容器 | void | 渲染广告视图 | 是 | 部分渠道可能需要调用render方法才能真正的展示广告 |
releaseAdapter | - | void | 释放资源 | 是 | 请在此处对渠道的广告对象进行销毁,并setAdapterAdInfo(null); |
6.6.2 信息流原生自渲染广告
NativeAdListener构造信息流模板监听类,将该监听设置到广告渠道设置监听回调方法内。注意:需要继承 BaseAdListener,实现所适配渠道的信息流原生自渲染广告监听回调,并在回调中调用事先set的adListener内的方法。
BaseAdListener类需要实现的方法说明
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
NativeAdListener | @param platformPosId 广告平台id @param adListener 信息流原生自渲染监听器 | NativeAdListener | 构造监听类,用于打通广告渠道与ADSuyi间的回调 | 是 | - |
release | - | void | 在这里可以对一些对象进行销毁 | 是 | - |
NativeAdListener需要实现三方广告监听回调,这里以优量汇为例子,需要实现优量汇 NativeADUnifiedListener 监听:
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
onADLoaded | List nativeUnifiedADDataList:返回了可以用来展示广告的 NativeUnifiedADData | void | 优量汇广告加载成功回调,在该接口中需要开发者创建 List 数组,将NativeUnifiedADData循环放到ADSuyiNativeAdInfo对象中,并调用 ADSuyiNativeAdListener onAdReceive 回调,用于提示开发者广告获取成功。 | 是 | |
... | - | ... | 其它接口回调逻辑请参考适配器demo | ... | ... |
NativeAdInfo 信息流模板广告内容对象,需要继承 BaseAdInfo<ADSuyiNativeAdListener, E>,其中E为渠道的信息流模板广告对象,并实现 ADSuyiNativeFeedAdInfo、NativeADEventListener、NativeADMediaListener 接口
接口 | 参数说明 | 返回值 | 作用 | 是否必须实现 | 说明 |
---|---|---|---|---|---|
isNativeExpress | - | boolean | 是否为模板广告 | 是 | 请直接返回false |
isVideo | - | boolean | 是否为带视频的原生自渲染广告 | 是 | 渠道的信息流原生自渲染广告对象如果有相应接口,可以在该方法中进行调用 |
setVideoListener | - | void | 设置信息原生自渲染广告带视频情况时的监听回调 | 否 | 有需求的话可以进行设置 |
registerViewForInteraction | ViewGroup viewGroup:需要传入广告容器 View... views:传递可点击的view | void | xxx | 是 | - |
getTitle | - | String | 获取广告标题 | 是 | 渠道的信息流原生自渲染广告对象如果有相应接口,可以在该方法中进行调用 |
getDesc | - | String | 获取广告内容 | 是 | 渠道的信息流原生自渲染广告对象如果有相应接口,可以在该方法中进行调用 |
getActionType | - | String | 获取广告类型 | 是 | 渠道的信息流原生自渲染广告对象如果有相应接口,可以在该方法中进行调用 |
getCtaText | - | String | 获取广告行动按钮文案 | 是 | 渠道的信息流原生自渲染广告对象如果有相应接口,可以在该方法中进行调用 |
getIconUrl | - | String | 获取广告icon图标 | 是 | 渠道的信息流原生自渲染广告对象如果有相应接口,可以在该方法中进行调用 |
getImageUrl | - | String | 获取广告大图 | 是 | 渠道的信息流原生自渲染广告对象如果有相应接口,可以在该方法中进行调用 |
getImageUrlList | - | List | 获取广告大图数组 | 是 | 渠道的信息流原生自渲染广告对象如果有相应接口,可以在该方法中进行 |
hasMediaView | - | String | 是否包含视频控件 | 是 | 渠道的信息流原生自渲染广告对象如果有相应接口,可以在该方法中进行调用 |
isVideo | - | View | 是否为包含视频广告 | 是 | 渠道的信息流原生自渲染广告对象如果有相应接口,可以在该方法中进行调用 |
getMediaView | ViewGroup container | View | 获取广告视频视图 | 是 | 一般自渲染广告都会有写好的视频控件,如果没有请在isVideo中返回false |