# PI ads SDK集成文档_Android(v5.0.0)

# 1. 集成准备

# 1.1 接入前准备

接入pi_ads_xxx SDK前必须先接入基础的pi_base_xxx SDK,基础SDK必须接入才能使用广告SDK!!!

# 1.2 获取SDK

下载SDK: zeus_ads_v5.0.0.zip

# 1.3 Android Studio集成(集成方式一)

# 1.3.1 添加SDK

a. 将aar文件拷贝到应用级app下的libs文件夹中

b. 打开应用级app下的build.gradle文件添加以下代码

//依赖aar需要添加下面代码
repositories {
    flatDir {
        dirs 'libs'
    }
}

c. 在“dependencies”中添加如下编译依赖

//添加云步ads sdk
implementation(name: 'pi_base_v5.0.0', ext: 'aar')

//添加其他依赖库
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:recyclerview-v7:27.1.1'

# 1.4 Eclipse集成(集成方式二)

# 1.4.1 添加SDK

a. 将"Eclipse/libs"文件夹下所有文件复制到工程的libs文件夹下;
b. 将"Eclipse/res"文件夹下所有文件复制到工程的res文件夹下;
c. 将"Eclipse/AndroidManifest.xml"文件里的内容复制到工程的AndroidManifest.xml文件。

# 2. 接口调用

# 2.1 广告SDK初始化

  • 初始化接口必须调用,否则SDK无法正常工作!!!

  • 在Activity的onCreate()方法中调用初始化。

	
	ZeusAds.getInstance().init(Activity activity);

参数说明:

参数名称 参数类型 是否必须 参数说明
activity Activity 必须 游戏的Activity

# 2.2 开屏广告

  • 开屏广告无需游戏接入接口,通过打包工具二次打包时添加。

  • 只需执行以下4个步骤即可:
    a. 在云步管理后台,广告管理-->广告位中,添加一个广告位ID为"splash_ad",广告类型为"开屏"的广告位,配置其他值无效。
    b. 在云步管理后台,广告管理-->广告单元中,添加对应渠道的开屏广告源ID,开屏标题和开屏描述,是在开屏广告请求时,默认展示的文案,必须要填写!!!
    c. 在云步管理后台,广告管理-->广告位配置中,为广告位ID"splash_ad"绑定添加的广告源即可完成开屏的参数配置。
    d. 使用打包工具打广告包时请勾选开屏方向,横屏或者竖屏。横屏、竖屏根据广告平台的广告源ID决定,广告平台未说明区分横竖屏开屏广告的渠道,则默认只支持竖屏开屏广告!!!

  • 广告源配置tips:在广告单元中,添加对应渠道的广告源ID时,命名建议分渠道分广告类型命名,如:华为-开屏、华为-激励视频。

  • 广告场景tips:在展示广告时,可以传入广告场景,具体场景值自行定义,如:level_win,此参数仅做统计使用。

# 2.3 banner广告

  • banner广告是横幅广告,一般是游戏在顶部或者底部,预留位置用来展示横幅广告;

# 2.3.1 创建banner广告对象

  • 创建banner广告,根据云步后台创建的广告位ID新建banner广告对象。
	
	ZeusBannerAd bannerAd = new ZeusBannerAd(Activity activity, String zeusPosId, BannerGravity gravity);

参数说明:

参数名称 参数类型 是否必须 参数说明
activity Activity 必须 展示广告的Activity
zeusPosId String 必须 云步后台创建的广告位ID
gravity enum 必须 展示位置,目前只支持传顶部和底部
BannerGravity.BOTTOM:底部
BannerGravity.TOP:顶部

# 2.3.2 设置banner广告监听器

  • 在调用Banner广告的其他接口前,需设置广告事件回调的监听器,用来获取广告的事件回调,如不需要知道广告事件回调,则可以不设置监听。
	
	bannerAd.setAdListener(IZeusBannerAdListener listener);

监听器说明:

回调方法 说明
onAdLoaded() 广告加载成功
onAdShow(AdsInfo info) 广告展示成功
onAdClick(AdsInfo info) 广告被点击
onAdError(int code, String msg) 广告加载失败,返回错误码和错误信息
onAdClose(AdsInfo info) 广告被关闭

AdsInfo说明:

参数名称 参数类型 参数说明
adPlatform AdPlatform 广告平台,即具体的广告平台
zeusPosId String 广告位ID,云步后台建的广告位ID,创建对象时传入
sourcePosId String 广告源ID,即渠道的广告位ID
scene String 广告场景,调用展示接口时传入的广告场景

# 2.3.3 请求展示banner广告

  • 调用banner的show接口后,如果广告加载成功,SDK内部会渲染广告,开发者无需关心渲染部分。
	bannerAd.show();

带广告场景的接口:

	bannerAd.show(String scene);

广告场景参数说明:

参数名称 参数类型 是否必须 参数说明
scene String 可选 广告场景,自行定义即可,支持英文字母大小写和下划线

# 2.3.4 隐藏banner广告

  • 如果需要主动隐藏banner广告,可以调用hide接口。

  • 如果需要再次展示广告,重新调用show方法即可。

	
	bannerAd.hide();

# 2.3.5 销毁banenr广告对象

  • 在Activity的onDestroy()函数调用此方法。
	
	@Override
    protected void onDestroy() {
        super.onDestroy();
        if(bannerAd != null){
            bannerAd.destroy();
        }
    }

# 2.4 插屏广告

  • 插屏是插页图片广告;

# 2.4.1 创建插屏广告对象

  • 创建插屏广告,根据云步后台创建的广告位ID新建插屏广告对象。
	
	ZeusInterstitialAd interstitialAd = new ZeusInterstitialAd(Activity activity, String zeusPosId);

参数说明:

参数名称 参数类型 是否必须 参数说明
activity Activity 必须 展示广告的Activity
zeusPosId String 必须 后台创建的广告位ID

# 2.4.2 设置插屏广告监听器

  • 在调用插屏广告的其他接口前,需设置广告事件回调的监听器,用来获取广告的事件回调,如不需要知道广告事件回调,则可以不设置监听。
	
	interstitialAd.setAdListener(IZeusInterstitialAdListener listener);

监听器说明:

回调方法 说明
onAdLoaded() 广告加载成功
onAdShow(AdsInfo info) 广告展示成功
onAdClick(AdsInfo info) 广告被点击
onAdError(int code, String msg) 广告加载失败,返回错误码和错误信息
onAdClose(AdsInfo info) 广告被关闭

AdsInfo说明:

参数名称 参数类型 参数说明
adPlatform AdPlatform 广告平台,即具体的广告平台
zeusPosId String 广告位ID,云步后台建的广告位ID,创建对象时传入
sourcePosId String 广告源ID,即渠道的广告位ID
scene String 广告场景,调用展示接口时传入的广告场景

# 2.4.3 加载并展示插屏广告

  • 加载并展示插屏广告,此接口SDK内部会请求插屏广告并展示;

  • 无论插屏是否已填充,都可以直接调用此接口去展示插屏广告;SDK内部会判断,已填充则直接展示,没填充则会主动去加载插屏广告,如果加载成功,则也会展示插屏广告;

  • 一般情况,插屏广告没有特殊逻辑判断的话,无须调用load和show接口,直接调用此接口展示插屏广告即可。

	interstitialAd.loadAndShow();
	

带广告场景的接口:

	interstitialAd.loadAndShow(String scene);
	

广告场景参数说明:

参数名称 参数类型 是否必须 参数说明
scene String 可选 广告场景,自行定义即可,支持英文字母大小写和下划线

# 2.4.4 销毁插屏广告对象

  • 在Activity的onDestroy()函数调用此方法。
	
	@Override
    protected void onDestroy() {
        super.onDestroy();
        if(interstitialAd != null){
        	interstitialAd.destroy();
        }
    }

# 2.5 全屏视频广告

  • 全屏视频是插页视频广告,和激励视频广告的区别是,可以在播放过程中途选择跳过;

  • 目前只有部分广告平台支持,oppo、vivo、广点通、穿山甲、topon、4399支持;

# 2.5.1 创建全屏视频广告对象

  • 创建全屏视频广告,根据云步后台创建的广告位ID新建全屏视频广告对象。
	
	ZeusFullScreenVideoAd fullScreenVideoAd = new ZeusFullScreenVideoAd(Activity activity, String zeusPosId);

参数说明:

参数名称 参数类型 是否必须 参数说明
activity Activity 必须 展示广告的Activity
zeusPosId String 必须 云步后台创建的广告位ID

# 2.5.2 设置全屏视频广告事件回调监听器

  • 在调用全屏视频广告的其他接口前,需设置广告事件回调的监听器,用来获取广告的事件回调,如不需要知道广告事件回调,则可以不设置监听。
	
	fullScreenVideoAd.setAdListener(IZeusFullScreenVideoAdListener listener);

监听器说明:

回调方法 说明
onAdLoaded() 广告加载成功
onAdShow(AdsInfo info) 广告展示成功
onAdClick(AdsInfo info) 广告被点击
onAdError(int code, String msg) 广告加载失败,返回错误码和错误信息
onAdClose(AdsInfo info) 广告被关闭
onVideoPlayStart(AdsInfo info) 表示视频开始播放
onVideoPlayFinish(AdsInfo info) 表示视频播放完成

AdsInfo说明:

参数名称 参数类型 参数说明
adPlatform AdPlatform 广告平台,即具体的广告平台
zeusPosId String 广告位ID,云步后台建的广告位ID,创建对象时传入
sourcePosId String 广告源ID,即渠道的广告位ID
scene String 广告场景,调用展示接口时传入的广告场景

# 2.5.3 加载并展示全屏视频广告

  • 加载并展示全屏视频广告,此接口SDK内部会请求全屏视频广告并展示;

  • 无论全屏视频是否已填充,都可以直接调用此接口去展示全屏视频广告;SDK内部会判断,已填充则直接展示,没填充则会主动去加载全屏视频广告,如果加载成功,则也会展示全屏视频广告;

  • 一般情况,全屏视频广告没有特殊逻辑判断的话,无须调用load和show接口,直接调用此接口展示全屏视频广告即可。

	fullScreenVideoAd.loadAndShow();
	

带广告场景的接口:

	fullScreenVideoAd.loadAndShow(String scene);
	

广告场景参数说明:

参数名称 参数类型 是否必须 参数说明
scene String 可选 广告场景,自行定义即可,支持英文字母大小写和下划线

# 2.5.4 销毁全屏视频广告对象

  • 在Activity的onDestroy()函数调用此方法。
	
	@Override
    protected void onDestroy() {
        super.onDestroy();
        if(fullScreenVideoAd != null){
        	fullScreenVideoAd.destroy();
        }
    }

# 2.6 激励视频广告

# 2.6.1 创建激励视频广告对象

  • 创建激励视频广告,根据云步后台创建的广告位ID新建激励视频广告对象。
	
	ZeusRewardVideoAd rewardVideoAd = new ZeusRewardVideoAd(Activity activity, String zeusPosId);

参数说明:

参数名称 参数类型 是否必须 参数说明
activity Activity 必须 展示广告的Activity
zeusPosId String 必须 云步后台创建的广告位ID

# 2.6.2 设置激励视频广告事件回调监听器

  • 在调用激励视频广告的其他接口前,需设置广告事件回调的监听器,用来获取广告的事件回调,如不需要知道广告事件回调,则可以不设置监听。
	
	rewardVideoAd.setAdListener(IZeusRewardVideoAdListener listener);

监听器说明:

回调方法 说明
onAdLoaded() 广告加载成功
onAdShow(AdsInfo info) 广告展示成功
onAdClick(AdsInfo info) 广告被点击
onAdError(int code, String msg) 广告加载失败,返回错误码和错误信息
onAdClose(AdsInfo info) 广告被关闭
onVideoPlayStart(AdsInfo info) 表示视频开始播放
onVideoPlayFinish(AdsInfo info) 表示视频播放完成
onAdReward(AdsInfo info) 广告奖励回调,在这里可以向玩家发放奖励
onAdRewardFailed(AdsInfo info) 广告奖励失败,玩家中途关闭广告会回调此方法

AdsInfo说明:

参数名称 参数类型 参数说明
adPlatform AdPlatform 广告平台,即具体的广告平台
zeusPosId String 广告位ID,云步后台建的广告位ID,创建对象时传入
sourcePosId String 广告源ID,即渠道的广告位ID
scene String 广告场景,调用展示接口时传入的广告场景

# 2.6.3 判断是否缓存有激励视频广告

  • 判断是否有缓存的激励视频广告,返回true,表示激励视频广告已填充,可以直接调用show接口展示广告;返回false,则表示没有填充,需调用load接口去主动加载广告,加载结果可通过上述广告事件回调知道。

  • 此接口只是判断是否有广告填充,内部不会主动加载广告,悉知!!!

	
	boolean ready = rewardVideoAd.isReady();

# 2.6.4 请求激励视频广告

  • 主动加载激励视频广告,当需要提前缓存激励视频广告,或者没有广告缓存时,调用加载接口去请求广告,当回调填充后(onAdLoaded),可根据需要再调用show去展示广告。

  • 加载广告时,会回调onAdLoaded或者onAdError接口,回调onAdLoaded表示广告加载成功,回调onAdError表示广告加载失败。

  • 激励视频广告,每次要展示广告时,判断没有缓存再去调用load加载广告即可,切勿循环判断调用!!!

  • 加载广告接口为异步,并不是调用后立即填充,需要根据回调判断是否填充!!!

	
	rewardVideoAd.load();

# 2.6.4 展示激励视频广告

  • 当广告已填充时,调用show接口,可以展示激励视频广告;如果没填充,调用此接口无法展示广告!!!
	rewardVideoAd.show();
	

带广告场景的接口:

	rewardVideoAd.show(String scene);
	

广告场景参数说明:

参数名称 参数类型 是否必须 参数说明
scene String 可选 广告场景,自行定义即可,支持英文字母大小写和下划线

# 2.6.5 加载并展示激励视频广告

  • 加载并展示激励视频广告,此接口SDK内部会请求激励视频广告并展示;

  • 无论激励视频是否已填充,都可以直接调用此接口去展示激励视频广告;SDK内部会判断,已填充则直接展示,没填充则会主动去加载激励视频广告,如果加载成功,则也会展示激励视频广告;

	rewardVideoAd.loadAndShow();
	

带广告场景的接口:

	rewardVideoAd.loadAndShow(String scene);
	

广告场景参数说明:

参数名称 参数类型 是否必须 参数说明
scene String 可选 广告场景,自行定义即可,支持英文字母大小写和下划线

# 2.6.6 销毁激励视频广告

  • 在Activity的onDestroy()函数调用此方法。
	
	@Override
    protected void onDestroy() {
        super.onDestroy();
        if(rewardVideoAd != null){
        	rewardVideoAd.destroy();
        }
    }

# 2.7 原生广告

原生广告说明:

  • 目前原生广告只支持模板渲染,SDK内部会渲染素材,开发者无需关心;
  • 开发者需要根据自己的游戏UI调整原生广告的坐标和宽高,自行处理屏幕适配。

# 2.7.1 创建原生广告对象

  • 创建原生广告,根据云步后台创建的广告位ID新建原生广告对象。
	
	ZeusNativeAd nativeAd = new ZeusNativeAd(Activity activity, String zeusPosId, int x, int y, int width, int height);

参数说明:

参数名称 参数类型 是否必须 参数说明
activity Activity 必须 展示广告的Activity
zeusPosId String 必须 云步后台创建的广告位ID
x int 必须 屏幕左上角为手机屏幕坐标原点(0,0),x为横向坐标,原生广告区域左上角,距离屏幕原点的横向距离,单位:像素
y int 必须 屏幕左上角为手机屏幕坐标原点(0,0),y为纵向坐标,原生广告区域左上角,距离屏幕原点的纵向距离,单位:像素
width int 必须 原生广告宽度,单位:像素
height int 必须 原生广告高度,单位:像素

# 2.7.2 设置原生广告事件回调监听器

  • 在调用原生广告的其他接口前,需设置广告事件回调的监听器,用来获取广告的事件回调,如不需要知道广告事件回调,则可以不设置监听。
	
	nativeAd.setAdListener(IZeusNativeAdListener listener);

监听器说明:

回调方法 说明
onAdLoaded() 广告加载成功
onAdShow(AdsInfo info) 广告展示成功
onAdClick(AdsInfo info) 广告被点击
onAdError(int code, String msg) 广告加载失败,返回错误码和错误信息
onAdClose(AdsInfo info) 广告被关闭

AdsInfo说明:

参数名称 参数类型 参数说明
adPlatform AdPlatform 广告平台,即具体的广告平台
zeusPosId String 广告位ID,云步后台建的广告位ID,创建对象时传入
sourcePosId String 广告源ID,即渠道的广告位ID
scene String 广告场景,调用展示接口时传入的广告场景

# 2.7.3 判断是否缓存有原生广告

  • 判断是否有缓存的原生广告,返回true,表示原生广告已填充,可以直接调用show接口展示广告;返回false,则表示没有填充,需调用load接口去主动加载广告,加载结果可通过上述广告事件回调知道。

  • 此接口只是判断是否有广告填充,内部不会主动加载广告,悉知!!!

	
	boolean ready = nativeAd.isReady();

# 2.7.4 请求原生广告

  • 主动加载原生广告,当需要提前缓存原生广告,或者没有广告缓存时,调用加载接口去请求广告,当回调填充后(onAdLoaded),可根据需要再调用show去展示广告。

  • 加载广告时,会回调onAdLoaded或者onAdError接口,回调onAdLoaded表示广告加载成功,回调onAdError表示广告加载失败。

	
	nativeAd.load();

# 2.7.5 展示原生广告

  • 当广告已填充时,调用show接口,可以展示原生广告;如果没填充,调用此接口无法展示广告!!!
	nativeAd.show();

带广告场景的接口:

	nativeAd.show(String scene);

广告场景参数说明:

参数名称 参数类型 是否必须 参数说明
scene String 可选 广告场景,自行定义即可,支持英文字母大小写和下划线

# 2.7.6 加载并展示原生广告

  • 加载并展示原生广告,此接口SDK内部会请求原生广告并展示;

  • 无论原生广告是否已填充,都可以直接调用此接口去展示原生广告;SDK内部会判断,已填充则直接展示,没填充则会主动去加载原生广告,如果加载成功,则也会展示原生广告;

  • 一般情况,原生广告没有特殊逻辑判断的话,无须调用load和show接口,直接调用此接口展示原生广告即可。

	nativeAd.loadAndShow();
	

带广告场景的接口:

	nativeAd.loadAndShow(String scene);
	

广告场景参数说明:

参数名称 参数类型 是否必须 参数说明
scene String 可选 广告场景,自行定义即可,支持英文字母大小写和下划线

# 2.7.7 隐藏原生广告

  • 在需要关闭原生广告时,调用hide()方法。
	nativeAd.hide();

# 2.7.8 销毁原生广告

  • 在Activity的onDestroy()函数调用此方法。
	
	@Override
    protected void onDestroy() {
        super.onDestroy();
        if(nativeAd != null){
        	nativeAd.destroy();
        }
    }

# 3. 测试

# 3.1 测试限制

  • 目前SDK可以拉到测试广告,如果需要测试对应渠道的广告,需要使用打包工具打渠道包后方可测试。

# 3.2 手机限制

  • oppo渠道广告必须使用oppo手机测试

  • vivo渠道广告必须使用vivo手机测试

  • 小米渠道广告必须使用小米手机测试

  • 华为渠道广告必须使用华为手机测试

  • 其他渠道广告没有限制