# ADJgSdk-Android **Repository Path**: jiguang-official/adjg-sdk-android ## Basic Information - **Project Name**: ADJgSdk-Android - **Description**: 广告聚合SdkDemo-Android - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 0 - **Created**: 2022-05-09 - **Last Updated**: 2025-09-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ADJgSdk Android Sdk——接入文档 V4.0.1.06033 目录 [TOC]
## 1. 概述 ### 1.1 概述 尊敬的开发者朋友,欢迎您使用ADJg广告聚合SDK。通过本文档,您可以快速完成多平台广告SDK的集成。 **注意:本SDK仅支持中国大陆地区**;如需发布到Google Play,请勿引入本SDK及相关依赖文件。 ### 1.2 ADJg广告聚合SDK 组成结构 ADJg广告聚合SDK主要由**ADJg核心SDK(简称ADJgSdk)**和一个或多个**三方平台适配器SDK(简称AdapterSdk)**组成,开发者可以自由的在后台配置中选择需要接入的三方广告平台,然后导入所对应的AdapterSdk,其中**天目平台的AdapterSdk是必须导入的**。 ### 1.3 三方广告平台名称概述 | Name | 平台名称 | 平台别称 | | --------- | -------- | -------- | | jgads | 极光Ads | 极光Ads | | tianmu | 天目 | 天目 | | gdt | 优量汇 | 优量汇 | | toutiao | 头条 | 穿山甲 | | baidu | 百度 | 百青藤 | | ksad | 快手 | 快手 | | beizi | 倍孜 | 倍孜 | | octopus | 章鱼 | 章鱼 | | huiying | 汇盈 | 汇盈 | ### 1.4 ADJg必添包容量 | Name | 大小 | 版本号 | | --------- | ----- | ------------ | | ADJg基础包 | 0.30M | V4.0.1.06033 | | OAID | 1.10M | — | | OAID适配器 | 0.03M | 1.0.25.12122 | ### 1.5 三方广告平台适配器+三方广告sdk总容量 | Name | 容量 | 版本号 | 备注 | | --------- | -------- | ----------------- | -- | | jgads | 1.50M | v3.0.1.06192 | | | tianmu | 1.80M | v3.0.2.08131 | | | gdt | 1.94M | v4.642.1512.07241 | | | toutiao | 7.03M | v7.0.0.8.07241 | | | baidu | 1.74M | v9.394.07241 | 此版本开始仅支持AndroidX | | ksad | 4.25M | v4.6.30.1.07241 | | | beizi | 2.01M | v5.2.1.20.07211 | | | octopus | 1.06M | v1.6.3.8.06192 | | | huiying | 1.20M | v1.5.3.8.08251 | | | gromore | 0.05M | v7.0.0.8.08261 | 不包含穿山甲 | ## 2. 支持的广告类型 ### 2.1 普通广告
类型 简介 适用场景
开屏广告 开屏广告以APP启动作为曝光时机的模板广告,需要将开屏广告视图添加到承载的广告容器中,提供5s可感知广告展示 APP启动界面常会使用开屏广告
Banner广告 Banner广告是横向贯穿整个可视页面的模板广告,需要将Banner广告视图添加到承载的广告容器中 任意界面的固定位置,不建议放在RecyclerView、List这种滚动布局中当item
信息流广告 信息流广告集合原生自渲染广告和模板广告两种,可以通过后台配置和SDK相关方法判断进行不同的渲染,以满足不同的样式需求 信息流列表,轮播控件,固定位置都是较为适合
激励视频广告 将短视频融入到APP场景当中,用户观看短视频广告后可以给予一些应用内奖励 常出现在游戏的复活、任务等位置,或者网服类APP的一些增值服务场景
插屏广告 插屏广告是移动广告的一种常见形式,在应用流程中弹出,当应用展示插屏广告时,用户可以选择点击广告,访问其目标网址,也可以将其关闭并返回应用 在应用执行流程的自然停顿点,适合投放这类广告
### 2.2 倍孜广告接入注意 由于引入的倍孜 sdk 支持的最小版本与 app 支持的最小版本可能不一致,需要在 AndroidManifest 文件中添加如下代码: ```java ``` ## 3. Demo及SDK下载链接 > 请参考文档 ## 4. SDK版本说明 ### 4.1 ADJgSdk版本号说明 版本号格式为3.0.0.xxxxn,其中xxxx代表日期,最后一位n为版本扩展号; ### 4.2 AdapterSdk版本号说明 版本号格式为 y.y.xxxxn,y.y代表三方SDK版本号(可能两位、也可能三位、四位...),其中xxxx代表日期,最后一位n为版本扩展号; ### 4.3 AdapterSdk和ADJgSdk版本对应说明 AdapterSdk会指定支持的ADJgSdk版本,**如果导入的AdapterSdk和ADJgSdk版本不对应会抛出异常提醒开发者使用相对应的版本**; ## 5. SDK接入流程 ### 5.1 添加SDK到工程中 接入环境:**Android Studio**。 #### 5.1.1 添加仓库地址 首先需要在项目的build.gradle文件中引入如下配置: ```java allprojects { repositories { ... // 极光仓库 maven { url 'https://s01.oss.sonatype.org/content/repositories/releases/' } google() jcenter() mavenCentral() } } ``` #### 5.1.2 添加ADJgSdk和需要的AdapterSdk 将广告所需要的依赖集成进去,AdapterSdk可根据接入平台情况进行选择接入。 ```java dependencies { // support支持库,如果是AndroidX请使用对应的支持库 implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:support-v4:28.0.0' implementation 'com.android.support:design:28.0.0' // ADJg主SDK ,必须的 implementation "cn.jiguang.sdk.ad:core:4.0.1.06033" // OAID1.0.25版本适配器不支持其它版本,ADJgSdk获取oaid使用 implementation "cn.jiguang.sdk.ad:oaid:1.0.25.12122" // OAID库1.0.25 implementation(name: 'oaid_sdk_1.0.25', ext: 'aar') // 极光Ads适配器,必须的 implementation "cn.jiguang.sdk.ad.adapter:jgads:3.0.1.06192" // 天目适配器,必须的 implementation "cn.jiguang.sdk.ad.adapter:tianmu:3.0.2.08131" // 优量汇适配器,可选的 implementation "cn.jiguang.sdk.ad.adapter:gdt:4.642.1512.07241" // 头条适配器,可选的 implementation "cn.jiguang.sdk.ad.adapter:toutiao:7.0.0.8.07241" // Gromore适配器,可选的 implementation 'cn.jiguang.sdk.ad.adapter:gromore-without:7.0.0.8.08261' // 百度适配器,仅支持androidx版本,可选的 implementation "cn.jiguang.sdk.ad.adapter:baidu-androidx:9.394.07241" // 快手适配器,可选的 implementation "cn.jiguang.sdk.ad.adapter:ksadbase:4.6.30.1.07241" // 倍孜适配器,可选的 implementation 'cn.jiguang.sdk.ad.adapter:beizi:5.2.1.20.07211' // 章鱼适配器,可选的 implementation 'cn.jiguang.sdk.ad.adapter:octopus:1.6.3.8.06192' // 汇盈适配器 implementation 'cn.jiguang.sdk.ad.adapter:huiying:1.5.3.8.08251' // 汇盈sdk必须引入内容 implementation 'com.squareup.okhttp3:okhttp:3.12.1' implementation 'com.google.code.gson:gson:2.8.5' implementation 'com.googlecode.android-query:android-query:0.25.9' implementation 'com.android.support:cardview-v7:21.0.0' } ``` #### 5.1.3 注意事项 * 支持主流架构,x86架构暂不支持 ```java ndk { // 设置支持的SO库架构,暂不支持x86 abiFilters 'armeabi-v7a', 'arm64-v8a' } ``` * **AdapterSdk默认已经集成了三方的广告SDK**,如果因为项目中也使用了相同的三方广告SDK而发生冲突,可通过以下方法尝试避免或解决; 1. 移除己方使用的三方广告SDK和相关配置; 2. 使用**AdapterSdk**的**without**集成方式,该方式没有集成三方广告SDK和配置,开发者可自行集成三方广告SDK,但是需要注意,我们的AdapterSdk是基于三方广告SDK某个版本开发的,如果自行集成三方广告SDK,需要承担三方广告SDK版本不一致可能引起的兼容性和其他不可预知问题; ```java // 优量汇AdapterSdk的without集成示例,其中x.x.x.x为AdapterSdk版本号 implementation 'cn.jiguang.sdk.ad.adapter:gdt-without:x.x.x.x' ``` 3. 激励、全屏视频、插屏等广告对象一次成功拉取的广告数据只允许展示一次,还需展示请再次加载广告。 ### 5.2 OAID1.0.25版本支持 **Android10之后IMEI等数据无法获取,这对广告投放将产生一定影响,所以移动安全联盟(MSA)提出OAID来代替IMEI参与广告投放决策,OAID的支持会在一定程度上影响广告收益;** **OAID是必须集成项,没有集成将会抛出异常提醒开发者**,OAID集成并不繁琐,SDK中已经进行了OAID1.0.25的封装适配,只需以下几步即可完成OAID的支持; 1. 导入安全联盟的OAID支持库 **oaid_sdk_1.0.25.aar**,可在Demo的libs目录下找到,**对接其它版本请勿参考该教程;**
2. 将Demo中assets文件夹下的**supplierconfig.json**文件复制到自己的assets目录下并按照**supplierconfig.json**文件中的说明进行OAID的 **AppId** 配置,**supplierconfig.json**文件名不可修改。需要设置 appid 的部分需要去对应厂商的应用商店的应用信息中查看; 3. 添加以下混淆配置; ```java -keep class com.bun.miitmdid.core.** {*;} -keep class XI.CA.XI.**{*;} -keep class XI.K0.XI.**{*;} -keep class XI.XI.K0.**{*;} -keep class XI.vs.K0.**{*;} -keep class XI.xo.XI.XI.**{*;} -keep class com.asus.msa.SupplementaryDID.**{*;} -keep class com.asus.msa.sdid.**{*;} -keep class com.bun.lib.**{*;} -keep class com.bun.miitmdid.**{*;} -keep class com.huawei.hms.ads.identifier.**{*;} -keep class com.samsung.android.deviceidservice.**{*;} -keep class com.zui.opendeviceidlibrary.**{*;} -keep class org.json.**{*;} -keep public class com.netease.nis.sdkwrapper.Utils {public ;} ``` 4. 修改AndroidManifest.xml,**OAID SDK minSdkVersion为21,如果应用的minSdkVersion小于21,则添加:** ```java // 如果导入后有冲突可以不添加,sdk中已经添加过了 ``` **注意:使用其它版本oaid请移除以下依赖,避免造成崩溃:** ```java // OAID1.0.25版本适配器不支持其它版本,ADJgSdk获取oaid使用 implementation "cn.jiguang.sdk.ad:oaid:1.0.25.12122" // OAID库1.0.25 implementation(name: 'oaid_sdk_1.0.25', ext: 'aar') ``` 5. 使用其它版本参考案例 [Oaid高版本参考案例](https://gitee.com/jiguang-official/adjg-oaid-docking-case) ### 5.3 权限申请 使用SDK时可能需要以下权限,为了保证使用广告的正确,请在6.0及以上的手机中使用SDK前及时申请。 ```java ``` ### 5.4 兼容配置 #### 5.4.1 网络配置 需要在 AndroidManifest.xml 添加依赖声明**uses-library android:name="org.apache.http.legacy" android:required="false"**, 且 application标签中添加 **android:usesCleartextTraffic="true"**,适配网络http请求,否则 SDK可能无法正常工作,接入代码示例如下: ```java ... ... ``` #### 5.4.2 混淆配置 如果打包时开启了混淆配置,请按需添加以下混淆内容,并保证广告资源文件不被混淆 ```java -ignorewarnings # v4、v7(如果是Support支持库需添加) -keep class android.support.v4.**{public *;} -keep class android.support.v7.**{public *;} # AndroidX (如果是AndroidX支持库需添加) -keep class com.google.android.material.** {*;} -keep class androidx.** {*;} -keep class * extends androidx.** # 资源文件混淆配置 -keep class **.R$* { *; } -keep public class **.R$*{ public static final int *; } -keepclassmembers class **.R$* { public static ; } # ADJgSdk混淆 -dontwarn cn.jiguang.jgssp.** -dontwarn org.apache.commons.** -keep class cn.jiguang.jgssp.**{public *;} -keep class com.android.**{*;} -keep class com.ciba.**{ *; } -keep class org.apache.**{*;} # okhttp -dontwarn okhttp3.** -keep class okhttp3.**{*;} # OAID混淆 -keep class com.bun.miitmdid.core.** {*;} -keep class XI.CA.XI.**{*;} -keep class XI.K0.XI.**{*;} -keep class XI.XI.K0.**{*;} -keep class XI.vs.K0.**{*;} -keep class XI.xo.XI.XI.**{*;} -keep class com.asus.msa.SupplementaryDID.**{*;} -keep class com.asus.msa.sdid.**{*;} -keep class com.bun.lib.**{*;} -keep class com.bun.miitmdid.**{*;} -keep class com.huawei.hms.ads.identifier.**{*;} -keep class com.samsung.android.deviceidservice.**{*;} -keep class org.json.**{*;} -keep public class com.netease.nis.sdkwrapper.Utils {public ;} # 优量汇广告平台混淆 -keep class com.qq.e.** {public protected *;} -keep class MTT.ThirdAppInfoNew {*;} -keep class com.tencent.** {*;} # 百度广告SDK混淆 -keepclassmembers class * extends android.app.Activity { public void *(android.view.View);} -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class com.baidu.mobads.** { *; } -keep class com.baidu.mobad.** { *; } # 头条广告平台混淆 -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod -keep class com.bytedance.sdk.openadsdk.** {*;} -keep public interface com.bytedance.sdk.openadsdk.downloadnew.** {*;} -keep class com.pgl.sys.ces.* {*;} -keep class com.bytedance.embed_dr.** {*;} -keep class com.bytedance.embedapplog.** {*;} # mintegral广告平台混淆 -dontwarn com.mintegral.** -keepattributes Signature -keepattributes *Annotation* -keep class com.mbridge.** {*; } -keep interface com.mbridge.** {*; } -keep class android.support.v4.** { *; } -dontwarn com.mbridge.** -keep class **.R$* { public static final int mbridge*; } # 快手广告平台混淆 -keep class org.chromium.** { *; } -keep class aegon.chrome.** { *; } -keep class com.kwai.**{ *; } -keep class com.kwad.**{ *; } -dontwarn com.kwai.** -dontwarn com.kwad.** -dontwarn com.ksad.** -dontwarn aegon.chrome.** -keep class com.kwad.sdk.** { *;} -keep class com.ksad.download.** { *;} -keep class com.kwai.filedownloader.** { *;} -keepclasseswithmembernames class * { native ;} # 极光Ads混淆 -keep class com.junion.**{ *; } -keep class junion.com.** { *; } -keep interface junion.com.** { *; } # 天目广告混淆 -keep class com.tianmu.**{ *; } -keep class tianmu.com.** { *; } -keep interface tianmu.com.** { *; } # Jgid的混淆规则 -keep class jgssp.com.** { *; } -keep interface jgssp.com.** { *; } #倍孜Beizi广告混淆 -dontwarn android.app.** -dontwarn android.support.** -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod -dontwarn org.apache.** -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -dontwarn com.beizi.fusion.** -dontwarn com.beizi.ad.** -keep class com.beizi.fusion.** {*; } -keep class com.beizi.ad.** {*; } # 章鱼的混淆规则 -dontwarn com.octopus.ad.** -keep class com.octopus.ad.** {*;} # 汇盈的混淆规则 -keep class cn.haorui.sdk.** { *; } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } ``` #### 5.4.3 开启硬件加速,优化视频类广告播放效果。 ```java ... ... ``` ### 5.5 隐私信息控制开关 **为了保证您的App顺利通过检测,结合当前监管关注重点,请务必将ADJgSdk的初始化放在用户同意隐私政策之后。** **如合规有更高要求,可以使用以下方法进行控制,但会严重降低广告收益,可根据实际需求进行设置,或联系我发运营人员获取建议。** 同时ADJgSDK初始化时开放以下接口,确保mac,imei等设备标识不被读取(目前部分三方广告平台支持): ```java //【慎改】是否同意隐私政策,将禁用一切设备信息读起严重影响收益 .agreePrivacyStrategy(false) // 是否可获取定位数据 .isCanUseLocation(false) // 是否可获取设备信息 .isCanUsePhoneState(false) // 是否可读取设备安装列表 .isCanReadInstallList(false) // 是否可读取设备外部读写权限 .isCanUseReadWriteExternal(false) // 是否可读取WIFI信息 .isCanUseWifiState(false) // 是否可使用OAID .isCanUseOaid(false) // 是否允许使用传感器 .isCanUseSensor(false) ``` 另外还可从根源上解决设备标识被读取等问题,可对配置清单中的权限增加tools:node="remove"配置; 如下: ```java ``` 以上操作会对广告填充造成影响,请斟酌使用。 ### 5.6 个性化开关 ADJg的个性化开关可统一控制第三方广告SDK的个性化开关接口,目前支持天目、优量汇、穿山甲、百度、快手; ```java // true为开启、false为关闭,请在初始化ADJg后进行控制 ADJgSdk.setPersonalizedAdEnabled(boolean personalized); ``` ### 5.7 向SDK传入设备标识 统一由可选参数 : CustomDeviceInfoController 进行设置 - 新增可选参数设置 ```java ADJgSdk.getInstance().init( this, new ADJgInitConfig.Builder() ... // 是否可读取wifi状态 .isCanUseWifiState(false) // 是否可获取定位数据 .isCanUseLocation(false) // 是否可获取设备信息 .isCanUsePhoneState(false) .setCustomDeviceInfoController(new CustomDeviceInfoController() { /** * 当isCanUsePhoneState=false时,可传入imei信息,使用您传入的imei信息 * @return imei信息 */ @Override public String getImei() { return super.getImei(); } /** * 当isCanUsePhoneState=false时,可传入AndroidId信息,使用您传入的AndroidId信息 * @return androidid信息 */ @Override public String getAndroidId() { return super.getAndroidId(); } /** * 当isCanUseLocation=false时,可传入地理位置信息,使用您传入的地理位置信息 * @return 极光地理位置参数JUnionLocationProvider */ @Override public Location getLocation() { return super.getLocation(); } /** * 当isCanUseWifiState=false时,可传入Mac地址信息,使用您传入的Mac地址信息 * @return Mac地址 */ @Override public String getMacAddress() { return super.getMacAddress(); } /** * 开发者可以传入oaid ,若不传或为空值,则不使用oaid信息 * @return oaid */ @Override public String getOaid() { return super.getOaid(); } /** * 开发者可以传入vaid ,若不传或为空值,则不使用vaid信息 * @return vaid */ @Override public String getVaid() { return super.getVaid(); } }) ... .build() ); ``` ### 5.8 三方广告隐私开关单独控制 > [汇盈](https://gitee.com/jiguang-official/adjg-sdk-android/blob/master/汇盈隐私控制开关.md) ## 6. 示例代码 ### 6.1 SDK初始化 在隐私同意后进行SDK的初始化(详情请参考Demo SplashAdActivity.java类) #### 6.1.1 初始化主要 API **ADJgSdk** cn.jiguang.jgssp.ADJgSdk | 方法名 | 介绍 | | ------------ | ---- | | init(Context context, ADJgInitConfig config) | 构造方法。参数说明:context(初始化SDK请传入Application的上下文对象)、config(初始化配置信息)。| | init(Context context, ADJgInitConfig config, ADJgInitListener listener) | 构造方法。参数说明:context(初始化SDK请传入Application的上下文对象)、config(初始化配置信息)、listener(初始化状态监听)。| | setPersonalizedAdEnabled(boolean enablePersonalized) | 设置个性化推荐开关。参数说明:enablePersonalized(true:开启,false:关闭, 默认:true)。| | getPersonalizedAdEnabled() | 获取个性化推荐状态,true:开启,false:关闭。 | **ADJgInitConfig** cn.jiguang.jgssp.config.ADJgInitConfig | 方法名 | 介绍 | | ------------ | ---- | | appId(String appId) | 设置AppId,必填参数。| | debug(boolean debug) | 设置是否是Debug模式。参数说明:debug(true:开启,false:关闭, 默认:false)开发阶段以及提交测试阶段可设置为true,方便异常排查。| | isCanUseSensor(boolean isCanUseSensor) | 设置SDK是否可以使用传感器信息。参数说明:isCanUseSensor(true:开启,false:关闭, 默认:false,建议媒体升级后调用该方法开启。目前仅支持控制优量汇、快手、天目、极光Ads,其中优量汇、天目、极光Ads可控制所有广告类型,快手仅支持控制开屏,其他渠道需要到对应后台控制或提交工单关闭,关闭后将影响广告点击率)。| | isCanUseLocation(boolean isCanUseLocation) | 设置SDK是否可以使用定位信息。参数说明:isCanUseLocation(true:开启,false:关闭, 默认:true)。| | isCanUsePhoneState(boolean isCanUsePhoneState) | 设置SDK是否可以使用IMEI等设备信息。参数说明:isCanUsePhoneState(true:开启,false:关闭, 默认:true)。| | isCanUseWifiState(boolean isCanUseWifiState) | 设置SDK是否可以使用WIFI信息。参数说明:isCanUseWifiState(true:开启,false:关闭, 默认:true)。| | agreePrivacyStrategy(boolean agreePrivacyStrategy) | 是否同意隐私政策。参数说明:agreePrivacyStrategy(true:开启,false:关闭, 默认:true)。| | filterThirdQuestion(boolean filterThirdQuestion) | 设置是否过滤第三方平台的问题广告(例如: 已知某个广告平台在某些机型的Banner广告可能存在问题,如果开启过滤,则在该机型将不再去获取该平台的Banner广告)。参数说明:filterThirdQuestion(true:开启,false:关闭, 默认:true)。| | setCustomDeviceInfoController(CustomDeviceInfoController controller) | 自定义设备信息。可选参数。 请参考5.7 向SDK传入设备标识 | | setWXAppId(String wxAppId) | 设置微信AppId。可选参数。参数说明:wxAppId(微信AppId)| **CustomDeviceInfoController** cn.jiguang.jgssp.config.CustomDeviceInfoController | 方法名 | 介绍 | | ------------ | ---- | | getImei() | 当isCanUsePhoneState=false时,可传入imei信息,使用您传入的imei信息。| | getAndroidId() | 当isCanUsePhoneState=false时,可传入AndroidId信息,使用您传入的AndroidId信息。| | getLocation() | 当isCanUseLocation=false时,可传入地理位置信息,使用您传入的地理位置信息。| | getMacAddress() | 当isCanUseWifiState=false时,可传入Mac地址信息,使用您传入的Mac地址信息。| | getOaid() | 开发者可以传入oaid ,若不传或为空值,则不使用oaid信息。| | getVaid() | 开发者可以传入vaid ,若不传或为空值,则不使用vaid信息。| #### 6.1.2 初始化接入示例 ```java // 初始化ADJg广告SDK ADJgSdk.getInstance().init(this, new ADJgInitConfig.Builder() // 设置APPID,必须的 .appId(String appId) // 是否开启Debug,开启会有详细的日志信息打印,如果用上ADJgToastUtil工具还会弹出toast提示。 // 注意上线后请置为false .debug(boolean debug) ... .build()); ```

PS :AppId通过后台配置生成,初始化必须在主线程中进行,SDK暂不支持多进程。

### 6.2 开屏广告示例 开屏广告建议在闪屏页进行展示,开屏广告的宽度和高度取决于容器的宽高,都是会撑满广告容器;**开屏广告的高度必须大于等于屏幕高度(手机屏幕完整高度,包括状态栏之类)的75%**,否则可能会影响收益计费(优量汇的开屏甚至会影响跳过按钮的回调)。 #### 6.2.1 开屏广告主要 API **ADJgSplashAd** cn.jiguang.jgssp.ad.ADJgSplashAd | 方法名 | 介绍 | | ------------ | ---- | | ADJgSplashAd(Activity activity) | 构造方法。参数说明:activity(当前页面activity对象)。| | ADJgSplashAd(Fragment fragment) | 构造方法。参数说明:fragment(当前页面fragment对象)。| | ADJgSplashAd(Activity activity, ViewGroup container) | 构造方法。参数说明:activity(当前页面activity对象)、container(展示广告视图的父容器)。| | ADJgSplashAd(Fragment fragment, ViewGroup container) | 构造方法。参数说明:fragment(当前页面fragment对象)、container(展示广告视图的父容器)。| | ADJgSplashAd(Context context) | 构造方法。参数说明:context(上下文对象)。注意:若使用该方法构造开屏广告对象,请使用loadOnly去加载广告。| | setLocalExtraParams(ADJgExtraParams extraParams) | 设置额外参数。参数说明:extraParams(广告额外参数)。| | setImmersive(boolean isImmersive) | 设置沉浸效果。参数说明:isImmersive(true:沉浸,false:不沉浸,影响跳过按钮位置)。| | setOnlySupportPlatform(String platform) | 设置广告定向,仅请求某一渠道。参数说明:platform(渠道名)。注:仅debug模式为true时生效。| | setListener(ADJgSplashAdListener listener) | 设置广告相关状态。参数说明:listener(广告状态监听器)。| | loadAd(String posId) | 请求广告并展示。参数说明:posId(广告位ID)。| | loadOnly(String posId) | 仅请求广告不展示。参数说明:posId(广告位ID)。| | loadAd(String posId, ADJgNetworkRequestInfo requestInfo) | 请求打底广告并展示,目前支持优量汇、头条、百度、快手。参数说明:posId(广告位ID)、requestInfo(打底广告对象,接口地址[Gitee地址](https://gitee.com/admobile/ADJgSdkDemo-Android/blob/master/README-ADJgNetworkRequestInfo.md)、[Github地址](https://github.com/ADJg/ADJgSdkDemo-Android/blob/master/README-ADJgNetworkRequestInfo.md))。| | showSplash() | 展示广告。使用loadOnly方法去加载广告时,可在onAdReceive回调后去展示广告。| | showSplash(ViewGroup container) | 展示广告。参数说明:container(广告展示父容器)。通过ADJgSplashAd(Activity activity)、ADJgSplashAd(Fragment fragment)构造广告对象,并使用loadOnly方法加载广告时,可在onAdReceive回调后调用该方法去展示广告。| | release() | 释放广告。注意:若通过ADJgSplashAd(Context context)去构造开屏广告对象,请在不使用广告时调用此方法释放广告| **ADJgExtraParams** cn.jiguang.jgssp.ad.entity.ADJgExtraParams | 方法名 | 介绍 | | ------------ | ---- | | ADJgExtraParams.Builder().build() | 构造方法。| | adSize(ADJgAdSize adSize) | 设置开屏视图宽高。参数说明:adSize(设置整个广告视图预期宽高(目前头条和倍孜平台需要,没有接入头条和倍孜平台可不设置),单位为px,如果不设置头条开屏广告视图将会以9 : 16的比例进行填充,小屏幕手机可能会出现素材被压缩的情况,大屏幕设备可能出现留白)。 | | setAdShakeDisable(boolean adShakeDisable) | 设置摇一摇禁用,目前优量汇、快手、天目、极光Ads渠道支持,其他渠道需要提交工单或渠道后台控制关闭。参数说明:adShakeDisable(true:禁用、false:可用,默认:false)。| **ADJgAdSize** cn.jiguang.jgssp.ad.entity.ADJgAdSize | 方法名 | 介绍 | | ------------ | ---- | | ADJgAdSize(int width, int height) | 构造方法。参数说明:
width(容器宽度,单位:px)请传入实际宽度、
height(容器高度,单位:px)请传入实际高度。| **ADJgSplashAdListener** cn.jiguang.jgssp.ad.listener.ADJgSplashAdListener | 方法名 | 介绍 | | ------------ | ---- | | onADTick(long millisUntilFinished) | 广告倒计时剩余时长回调。参数说明:millisUntilFinished(剩余时间,单位:秒))。| | onAdReceive(ADJgAdInfo adInfo) | 广告加载成功回调。| | onAdExpose(ADJgAdInfo adInfo) | 广告展示回调。| | onAdClick(ADJgAdInfo adInfo) | 广告点击回调。| | onAdSkip(ADJgAdInfo adInfo) | 广告跳过回调,用户点击跳过按钮时触发。| | onAdClose(ADJgAdInfo adInfo) | 广告关闭回调,用户点击跳过按钮、触发落地页后返回开屏页、倒计时结束,则触发。| | onReward(ADJgAdInfo adInfo) | 广告奖励回调,目前仅优量汇渠道有效。| | onAdFailed(ADJgError error) | 广告失败回调。参数说明:error(广告错误信息)。| **ADJgAdInfo** cn.jiguang.jgssp.ad.data.ADJgAdInfo | 方法名 | 介绍 | | ------------ | ---- | | getPlatform() | 获取三方广告平台名称,返回String类型。| | getECPM() | 获取ECPM,返回Double类型(单位:元)。| | getEcpmPrecision() | ECPM类型,返回String类型(accurate:精准、platform_assignment:平台指定、estimate:估算)。| #### 6.2.2 开屏广告加载并展示 ```java // 创建开屏广告实例,第一个参数可以是Activity或Fragment,第二个参数是广告容器 ADJgSplashAd splashAd = new ADJgSplashAd(Activity activity, ViewGroup container); // 创建额外参数实例 ADJgExtraParams extraParams = new ADJgExtraParams.Builder() .adSize(new ADJgAdSize(int width, int height)) .build(); // 如果开屏容器不是全屏可以设置额外参数 splashAd.setLocalExtraParams(extraParams); // 设置开屏广告监听 splashAd.setListener(new ADJgSplashAdListener() { @Override public void onADTick(long countdownSeconds) { // 如果没有设置自定义跳过按钮不会回调该方法(单位为秒) } @Override public void onReward(ADJgAdInfo adInfo) { // 目前仅优量汇渠道支持该回调 } @Override public void onAdSkip(ADJgAdInfo adInfo) { // 广告跳过回调,不一定准确,埋点数据仅供参考 } @Override public void onAdReceive(ADJgAdInfo adInfo) { // 广告获取成功回调 } @Override public void onAdExpose(ADJgAdInfo adInfo) { // 广告展示回调,有展示回调不一定是有效曝光,如网络等情况导致上报失败 } @Override public void onAdClick(ADJgAdInfo adInfo) { // 广告点击回调,有点击回调不一定是有效点击,如网络等情况导致上报失败 } @Override public void onAdClose(ADJgAdInfo adInfo) { // 广告关闭回调,需要在此进行页面跳转 } @Override public void onAdFailed(ADJgError error) { // 广告关闭回调,需要在此进行页面跳转 } }); // 加载并展示开屏广告 splashAd.loadAd(String posId); ``` > [开屏广告示例详情](https://gitee.com/jiguang-official/adjg-sdk-android/blob/master/app/src/main/java/com/jiguangssp/addemo/activity/SplashAdActivity.java) > #### 6.2.3 开屏广告加载与展示分离 ##### 仅加载开屏广告 ```java // 创建广告对象的逻辑与6.2.2的案例相同,不同点在loadAd ... // 仅加载开屏广告 splashAd.loadOnly(String posId); ``` ##### 展示开屏广告 ```java // 需要开发者在onAdReceive回调之后再展示开屏广告 ... public void onAdReceive(ADJgAdInfo adInfo) { // 广告获取成功回调... // 展示开屏广告 splashAd.showSplash(); } ... ``` > 开屏广告加载与展示分离示例 [Gitee地址](https://gitee.com/jiguang-official/adjg-sdk-android/blob/master/app/src/main/java/com/jiguangssp/addemo/activity/SplashAdLoadShowSeparationActivity.java) > ### 6.3 Banner横幅广告示例 Banner横幅广告建议放置在 **固定位置**,而非ListView、RecyclerView、ViewPager等控件中充当Item,Banner广告支持多种尺寸比例,可在后台创建广告位时配置,Banner广告的宽度将会撑满容器,高度自适应,建议Banner广告容器高度也为自适应。 #### 6.3.1 横幅广告主要 API **ADJgBannerAd** cn.jiguang.jgssp.ad.ADJgBannerAd | 方法名 | 介绍 | | ------------ | ---- | | ADJgBannerAd(Activity activity, ViewGroup container) | 构造方法。参数说明:activity(当前页面activity对象)、container(展示广告视图的父容器)。| | ADJgBannerAd(Fragment fragment, ViewGroup container) | 构造方法。参数说明:fragment(当前页面fragment对象)、container(展示广告视图的父容器)。| | setAutoRefreshInterval(long seconds) | 设置自刷新时间间隔。参数说明:seconds(0为不自动刷新(部分平台无效,如百度),其他取值范围为[30,120],单位秒)。| | setOnlySupportPlatform(String platform) | 设置广告定向,仅请求某一渠道。参数说明:platform(渠道名)。注:仅debug模式为true时生效。| | setListener(ADJgBannerAdListener listener) | 设置广告相关状态。参数说明:listener(广告状态监听器)。| | setSceneId(String sceneId) | 设置广告场景id,用于区分同一个广告位在不同场景下使用的数据。参数说明:sceneId(场景ID)。| | loadAd(String posId) | 请求广告并展示。参数说明:posId(广告位ID)。| | release() | 释放广告。| **ADJgBannerAdListener** cn.jiguang.jgssp.ad.listener.ADJgBannerAdListener | 方法名 | 介绍 | | ------------ | ---- | | onAdReceive(ADJgAdInfo adInfo) | 广告加载成功回调。| | onAdExpose(ADJgAdInfo adInfo) | 广告展示回调。| | onAdClick(ADJgAdInfo adInfo) | 广告点击回调。| | onAdClose(ADJgAdInfo adInfo) | 广告关闭回调,开发者需要在此回调中对广告父视图进行隐藏或移除子视图,并对广告对象进行释放,避免自刷新逻辑持续进行| | onAdFailed(ADJgError error) | 广告失败回调。参数说明:error(广告错误信息)。| **ADJgAdInfo** cn.jiguang.jgssp.ad.data.ADJgAdInfo | 方法名 | 介绍 | | ------------ | ---- | | getPlatform() | 获取三方广告平台名称,返回String类型。| | getECPM() | 获取ECPM,返回Double类型(单位:元)。| | getEcpmPrecision() | ECPM类型,返回String类型(accurate:精准、platform_assignment:平台指定、estimate:估算)。| #### 6.3.2 横幅广告加载并展示 ```java // 创建Banner广告实例,第一个参数可以是Activity或Fragment,第二个参数是广告容器(请保证容器不会拦截点击、触摸等事件) ADJgBannerAd bannerAd = new ADJgBannerAd(Activity activity, ViewGroup container); // 设置Banner广告监听 bannerAd.setListener(new ADJgBannerAdListener() { @Override public void onAdReceive(ADJgAdInfo adInfo) { // 广告获取成功回调 } @Override public void onAdExpose(ADJgAdInfo adInfo) { // 广告展示回调,有展示回调不一定是有效曝光,如网络等情况导致上报失败 } @Override public void onAdClick(ADJgAdInfo adInfo) { // 广告点击回调,有点击回调不一定是有效点击,如网络等情况导致上报失败 } @Override public void onAdClose(ADJgAdInfo adInfo) { // 广告关闭回调,开发者需要在此回调中对广告父视图进行隐藏或移除子视图, // 并对广告对象进行释放,避免自刷新逻辑持续进行 } @Override public void onAdFailed(ADJgError error) { // 广告获取失败回调 } }); // 加载Banner广告,参数为广告位ID,同一个ADJgBannerAd只有一次loadAd有效 bannerAd.loadAd(String posId); ``` >[Banner广告示例详情](https://gitee.com/jiguang-official/adjg-sdk-android/blob/master/app/src/main/java/com/jiguangssp/addemo/activity/BannerAdActivity.java) ### 6.4 信息流广告示例 信息流广告,具备自渲染和模板两种广告样式:自渲染是SDK将返回广告标题、描述、Icon、图片、多媒体视图等信息,开发者可通过自行拼装渲染成喜欢的样式;模板样式则是返回拼装好的广告视图,开发者只需将视图添加到相应容器即可,模板样式的容器高度建议是自适应。 **请务必确保自渲染类型广告渲染时包含广告创意素材(至少包含一张图片)、平台logo、广告标识、关闭按钮;模板广告不得被遮挡。** **注意,信息流广告点击关闭时,开发者需要在onAdClose回调中将广告容器隐藏或移除,避免如头条渠道点击关闭后视图依旧存在问题** #### 6.4.1 信息流广告主要 API **ADJgNativeAd** cn.jiguang.jgssp.ad.ADJgNativeAd | 方法名 | 介绍 | | ------------ | ---- | | ADJgNativeAd(Activity activity) | 构造方法。参数说明:activity(当前页面activity对象)。| | ADJgNativeAd(Fragment fragment) | 构造方法。参数说明:fragment(当前页面fragment对象)。| | setLocalExtraParams(ADJgExtraParams extraParams) | 设置额外参数。参数说明:extraParams(广告额外参数)。| | setOnlySupportPlatform(String platform) | 设置广告定向,仅请求某一渠道。参数说明:platform(渠道名)。注:仅debug模式为true时生效。| | setListener(ADJgNativeAdListener listener) | 设置广告相关状态。参数说明:listener(广告状态监听器)。| | setVideoListener(ADJgNativeVideoListener listener) | 设置广告相关状态。参数说明:listener(广告状态监听器)。| | setSceneId(String sceneId) | 设置广告场景id,用于区分同一个广告位在不同场景下使用的数据。参数说明:sceneId(场景ID)。| | loadAd(String posId) | 请求广告并展示。参数说明:posId(广告位ID)。| | loadAd(String posId, int count) | 请求广告并展示。参数说明:posId(广告位ID)、count(广告数量,1~3条)。| | release() | 释放广告。| **ADJgExtraParams** cn.jiguang.jgssp.ad.entity.ADJgExtraParams | 方法名 | 介绍 | | ------------ | ---- | | ADJgExtraParams.Builder().build() | 构造方法。| | adSize(ADJgAdSize adSize) | 设置整个广告视图预期宽高。参数说明:adSize(广告容器宽高,建议传入宽度为容器实际宽度,高度传入0(自适应高度))。| | nativeStyle(ADJgAdNativeStyle adNativeStyle) | 设置模板广告内外边距参数。参数说明:adNativeStyle(模板广告样式,目前仅天目平台需要)。| | nativeAdPlayWithMute(boolean isMute) | 视频静音设置。参数说明:isMute(true:静音、false:不静音,默认:true)。| **ADJgAdNativeStyle** cn.jiguang.jgssp.ad.entity.ADJgAdNativeStyle | 方法名 | 介绍 | | ------------ | ---- | | ADJgAdNativeStyle(int padding) | 构造方法。参数说明:padding(容器内边距)。| | ADJgAdNativeStyle(int paddingLeft, int paddingTop, int paddingRight, int paddingBottom) | 构造方法。参数说明:paddingLeft(容器左边距)、paddingTop(容器上边距)、paddingRight(容器右边距)、paddingBottom(容器下边距)。| | setTitleSize(int titleSize) | 设置标题大小。参数说明:titleSize(标题大小,单位:sp)。| | setDescSize(int descSize) | 副标题大小。参数说明:descSize(副标题大小,单位:sp)。| **ADJgNativeAdListener** cn.jiguang.jgssp.ad.listener.ADJgNativeAdListener | 方法名 | 介绍 | | ------------ | ---- | | onAdReceive(List\ adInfos) | 广告加载成功回调。| | onAdExpose(ADJgNativeAdInfo adInfo) | 广告展示回调。| | onAdClick(ADJgNativeAdInfo adInfo) | 广告点击回调。| | onAdClose(ADJgNativeAdInfo adInfo) | 广告关闭回调,在此回调中移除页面中的视图。| | onAdFailed(ADJgError error) | 广告失败回调。参数说明:error(广告错误信息)。| | onRenderFailed(ADJgNativeAdInfo adInfo, ADJgError error) | 广告失败回调。参数说明:error(广告错误信息)。| | onRenderSuccess(ADJgNativeAdInfo adInfo) | 广告渲染成功回调。| **ADJgNativeVideoListener** cn.jiguang.jgssp.ad.listener.ADJgNativeVideoListener | 方法名 | 介绍 | | ------------ | ---- | | onVideoLoad(ADJgNativeAdInfo nativeAdInfo) | 视频加载中回调。| | onVideoStart(ADJgNativeAdInfo nativeAdInfo) | 视频播放回调。| | onVideoPause(ADJgNativeAdInfo nativeAdInfo) | 视频暂停回调。| | onVideoComplete(ADJgNativeAdInfo nativeAdInfo) | 视频播放完毕回调。| | onVideoError(ADJgNativeAdInfo nativeAdInfo) | 视频异常回调。| **信息流广告父对象ADJgNativeAdInfo**

信息流模板和自渲染均继承自该类

cn.jiguang.jgssp.ad.data.ADJgNativeAdInfo | 方法名 | 介绍 | | ------------ | ---- | | isNativeExpress() | 广告类型,返回boolean类型,true模板类型,false自渲染类型。|

当isNativeExpress返回true时,可强转为ADJgNativeExpressAdInfo类,否则转为ADJgNativeFeedAdInfo类

**模板广告对象ADJgNativeExpressAdInfo继承自ADJgNativeAdInfo** cn.jiguang.jgssp.ad.data.ADJgNativeExpressAdInfo | 方法名 | 类型 | 介绍 | | ------------ | ---- | ---- | | getNativeExpressAdView() | View | 获取的是整个模板广告视图。| | render(ViewGroup container) | void | 渲染视图,调用该方法才能响应曝光、点击等操作,影响广告收益。参数说明:container(承载广告的容器,不能为空)| **自渲染广告对象ADJgNativeFeedAdInfo继承自ADJgNativeAdInfo** cn.jiguang.jgssp.ad.data.ADJgNativeFeedAdInfo | 方法名 | 类型 | 介绍 | | ------------ | ---- | ---- | | getTitle() | String | 获取广告标题,可能为空。| | getDesc() | String | 获取广告描述,可能为空。| | getActionType() | int | 获取广告交互类型,未知:-1,应用内打开落地页:0,浏览器打开落地页:1,下载类型:2,拨打电话:3。| | getCtaText() | String | 广告交互按钮文案,可能为空。| | getIconUrl() | String | 广告图标地址,可能为空。| | getImageUrl() | String | 图片地址,可能为空。。| | getImageUrlList() | List | 广告图片集合,可能为空。| | hasMediaView() | boolean | 判断是否包含多媒体广告视图。| | getMediaView() | View | 获取的是多媒体广告视图。| | getPlatformIcon() | int | 获取广告平台角标,资源文件地址。| | registerViewForInteraction(ViewGroup container, View... actionViews) | void | 注册广告视图。参数说明:container(广告容器)、
actionViews(可点击的布局)| | registerCloseView(View close) | void | 注册关闭按钮。参数说明:close(点击关闭的view,不注册将不会回调onAdClose事件)| | getAppInfo() | ADJgAdAppInfo | 下载类应用六要素信息,可能为空。 | **自渲染广告ADJgAdAppInfo六要素,需要先通过(nativeFeedAdInfo instanceof ADJgAdAppInfo)方法判断广告对象是否支持六要素返回, 然后通过强转获取六要素对象((ADJgAdAppInfo) nativeFeedAdInfo).getAppInfo()** cn.jiguang.jgssp.ad.data.ADJgAdAppInfo | 方法名 | 类型 | 介绍 | | ------------ | ---- | ---- | | getName() | String | 应用名,可能为空。| | getDeveloper() | String | 开发者,可能为空。| | getVersion() | String |版本号,可能为空。| | getPrivacyUrl() | String | 隐私地址,可能为空。| | getPermissionsUrl() | String | 权限地址,可能为空。| | getDescriptionUrl() | String | 功能介绍,可能为空。| | getSize() | long | 应用大小,可能为空。| | getIcp() | String | icp备案号,可能为空。| #### 6.4.2 信息流广告加载并展示 #### 6.4.2.1 信息流广告加载 ```java // 创建信息流广告实例 ADJgNativeAd nativeAd = new ADJgNativeAd(Activity activity); int widthPixels = getResources().getDisplayMetrics().widthPixels; // 创建额外参数实例 ADJgExtraParams extraParams = new ADJgExtraParams.Builder() // 设置整个广告视图预期宽高(目前仅头条、极光、天目平台需要,没有接入可不设置),单位为px,高度如果小于等于0则高度自适应 .adSize(new ADJgAdSize(widthPixels, 0)) .build(); // 设置一些额外参数,有些平台的广告可能需要传入一些额外参数,如果有接入头条平台,该参数必须设置 nativeAd.setLocalExtraParams(extraParams); // 设置广告监听 nativeAd.setListener(new ADJgNativeAdListener() { @Override public void onRenderFailed(ADJgNativeAdInfo adInfo, ADJgError error) { // 广告渲染失败,可在此回调中移除视图和释放广告对象 } @Override public void onRenderSuccess(ADJgNativeAdInfo adJgNativeAdInfo) { // 广告渲染成功回调 } @Override public void onAdReceive(List adInfos) { // 广告获取成功回调 } @Override public void onAdExpose(ADJgNativeAdInfo adInfo) { // 广告展示回调,有展示回调不一定是有效曝光,如网络等情况导致上报失败 } @Override public void onAdClick(ADJgNativeAdInfo adInfo) { // 广告点击回调,有点击回调不一定是有效点击,如网络等情况导致上报失败 } @Override public void onAdClose(ADJgNativeAdInfo adInfo) { // 广告关闭回调,可在此回调中移除视图和释放广告对象 } @Override public void onAdFailed(ADJgError error) { // 广告获取失败回调 } }); // 请求广告数据,参数一广告位ID,参数二请求数量[1,3] nativeAd.loadAd(String posId, int count); ``` #### 6.4.2.2 信息流广告展示-模板 ```java // 判断广告Info对象是否被释放(调用过ADJgNativeAd的release()或ADJgNativeAdInfo的release()会释放广告Info对象) // 释放后的广告Info对象不能再次使用 if (!ADJgAdUtil.adInfoIsRelease(nativeExpressAdInfo)) { // 当前是信息流模板广告,getNativeExpressAdView获取的是整个模板广告视图 View nativeExpressAdView = nativeExpressAdInfo.getNativeExpressAdView((ViewGroup) itemView); // 将广告视图添加到容器中的便捷方法 ADJgViewUtil.addAdViewToAdContainer((ViewGroup) itemView, nativeExpressAdView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); // 渲染广告视图, 必须调用, 因为是模板广告, 所以传入ViewGroup和响应点击的控件可能并没有用 // 务必在最后调用 nativeExpressAdInfo.render((ViewGroup) itemView); } ``` #### 6.4.2.3 信息流广告展示-自渲染 ```java // 判断广告Info对象是否被释放(调用过ADJgNativeAd的release()或ADJgNativeAdInfo的release()会释放广告Info对象) // 释放后的广告Info对象不能再次使用 if (!ADJgAdUtil.adInfoIsRelease(nativeFeedAdInfo)) { NativeAdAdapter.setVideoListener(nativeFeedAdInfo); // 交由子类实现加载图片还是MediaView setImageOrMediaData(context, nativeFeedAdInfo); Glide.with(context).load(nativeFeedAdInfo.getIconUrl()).into(ivIcon); ivAdTarget.setImageResource(nativeFeedAdInfo.getPlatformIcon()); tvTitle.setText(nativeFeedAdInfo.getTitle()); tvDesc.setText(nativeFeedAdInfo.getDesc()); tvAdType.setText(nativeFeedAdInfo.getCtaText()); // 注册广告交互, 必须调用 // 注意:部分渠道只会响应View...actionViews的点击事件,如快手的视频组件,不传则无法点击 nativeFeedAdInfo.registerViewForInteraction(rlAdContainer, rlAdContainer, tvAdType); // 注册关闭按钮,将关闭按钮点击事件交于SDK托管,以便于回调onAdClose // 务必最后调用 nativeFeedAdInfo.registerCloseView(ivClose); } ``` > [信息流自渲染广告示例详情](https://gitee.com/jiguang-official/adjg-sdk-android/blob/master/app/src/main/java/com/jiguangssp/addemo/activity/NativeAdActivity.java) > [信息流模板广告示例详情](https://gitee.com/jiguang-official/adjg-sdk-android/blob/master/app/src/main/java/com/jiguangssp/addemo/activity/NativeExpressAdActivity.java) ### 6.5 激励视频广告示例 将短视频融入到APP场景当中,用户观看短视频广告后可以给予一些应用内奖励。 #### 6.5.1 激励视频广告主要 API **ADJgRewardVodAd** cn.jiguang.jgssp.ad.ADJgRewardVodAd | 方法名 | 介绍 | | ------------ | ---- | | ADJgRewardVodAd(Activity activity) | 构造方法。参数说明:activity(当前页面activity对象)。| | ADJgRewardVodAd(Fragment fragment) | 构造方法。参数说明:fragment(当前页面fragment对象)。| | setLocalExtraParams(ADJgExtraParams extraParams) | 设置额外参数。参数说明:extraParams(广告额外参数)。| | setOnlySupportPlatform(String platform) | 设置广告定向,仅请求某一渠道。参数说明:platform(渠道名)。注:仅debug模式为true时生效。| | setListener(ADJgRewardVodAdListener listener) | 设置广告相关状态。参数说明:listener(广告状态监听器)。| | setSceneId(String sceneId) | 设置广告场景id,用于区分同一个广告位在不同场景下使用的数据。参数说明:sceneId(场景ID)。| | loadAd(String posId) | 请求广告并展示。参数说明:posId(广告位ID)。| | release() | 释放广告。| **ADJgExtraParams** cn.jiguang.jgssp.ad.entity.ADJgExtraParams | 方法名 | 介绍 | | ------------ | ---- | | ADJgExtraParams.Builder().build() | 构造方法。| | rewardExtra(ADJgRewardExtra extra) | 设置服务端奖励验证额外参数。参数说明:extra(服务端奖励验证额外参数请参考:[Gitee地址](https://gitee.com/jiguang-official/adjg-sdk-android/blob/master/Android-ADJgSDK激励视频服务端验证使用说明.md) | setVideoWithMute(boolean isMute) | 视频静音设置。参数说明:isMute(true:静音、false:不静音,默认:true)。| **ADJgRewardVodAdListener** cn.jiguang.jgssp.ad.listener.ADJgRewardVodAdListener | 方法名 | 介绍 | | ------------ | ---- | | onAdReceive(ADJgRewardVodAdInfo adInfo) | 广告加载成功回调。| | onAdExpose(ADJgRewardVodAdInfo adInfo) | 广告曝光回调。| | onAdClick(ADJgRewardVodAdInfo adInfo) | 广告点击回调。| | onAdClose(ADJgRewardVodAdInfo adInfo) | 广告关闭回调。| | onReward(ADJgRewardVodAdInfo adInfo) | 广告奖励回调。| | onVideoCache(ADJgRewardVodAdInfo adInfo) | 广告缓存成功回调。| | onVideoComplete(ADJgRewardVodAdInfo adInfo) | 广告播放完毕回调。| | onVideoError(ADJgRewardVodAdInfo adInfo, ADJgError error) | 视频播放错误回调。| | onAdFailed(ADJgError error) | 广告获取失败回调。| **ADJgRewardVodAdInfo** cn.jiguang.jgssp.ad.data.ADJgRewardVodAdInfo | 方法名 | 介绍 | | ------------ | ---- | | showRewardVod(Activity activity) | 展示广告。参数说明:activity(当前页面activity对象)。| | getPlatform() | 获取三方广告平台名称,返回String类型。| | getECPM() | 获取ECPM,返回Double类型(单位:元)。| | getEcpmPrecision() | ECPM类型,返回String类型(accurate:精准、platform_assignment:平台指定、estimate:估算)。| #### 6.5.2 激励视频广告加载并展示 ```java // 创建激励视频广告实例 ADJgRewardVodAd rewardVodAd = new ADJgRewardVodAd(Activity activity); // 设置激励视频广告监听 rewardVodAd.setListener(new ADJgRewardVodAdListener() { @Override public void onAdReceive(ADJgRewardVodAdInfo adInfo) { // 广告获取成功回调 // 全屏视频广告对象一次成功拉取的广告数据只允许展示一次 // 广告展示 adInfo.showRewardVod(Activity activity) } @Override public void onVideoCache(ADJgRewardVodAdInfo adInfo) { // 广告视频缓存成功回调 // 部分渠道存在激励展示类广告,不会回调该方法,建议在onAdReceive做广告展示处理 } @Override public void onVideoComplete(ADJgRewardVodAdInfo adInfo) { // 广告观看完成回调 } @Override public void onVideoError(ADJgRewardVodAdInfo adInfo, ADJgError error) { // 广告播放错误回调 } @Override public void onReward(ADJgRewardVodAdInfo adInfo) { // 广告激励发放回调 } @Override public void onAdExpose(ADJgRewardVodAdInfo adInfo) { // 广告展示回调,有展示回调不一定是有效曝光,如网络等情况导致上报失败 } @Override public void onAdClick(ADJgRewardVodAdInfo adInfo) { // 广告点击回调,有点击回调不一定是有效点击,如网络等情况导致上报失败 } @Override public void onAdClose(ADJgRewardVodAdInfo adInfo) { // 广告关闭回调 } @Override public void onAdFailed(ADJgError error) { // 广告获取失败回调 } }); // 加载激励视频广告,参数为广告位ID rewardVodAd.loadAd(String posId); ``` > [激励视频广告示例详情](https://gitee.com/jiguang-official/adjg-sdk-android/blob/master/app/src/main/java/com/jiguangssp/addemo/activity/RewardVodAdActivity.java) > [Android-ADJgSDK 激励视频服务端验证使用说明](https://gitee.com/jiguang-official/adjg-sdk-android/blob/master/Android-ADJgSDK激励视频服务端验证使用说明.md) ### 6.6 插屏广告示例 插屏广告是移动广告的一种常见形式,在应用流程中弹出,当应用展示插屏广告时,用户可以选择点击广告,也可以将其关闭并返回应用。 #### 6.6.1 插屏广告主要 API **ADJgInterstitialAd** cn.jiguang.jgssp.ad.ADJgInterstitialAd | 方法名 | 介绍 | | ------------ | ---- | | ADJgInterstitialAd(Activity activity) | 构造方法。参数说明:activity(当前页面activity对象)。| | ADJgInterstitialAd(Fragment fragment) | 构造方法。参数说明:fragment(当前页面fragment对象)。| | setLocalExtraParams(ADJgExtraParams extraParams) | 设置额外参数。参数说明:extraParams(广告额外参数)。| | setOnlySupportPlatform(String platform) | 设置广告定向,仅请求某一渠道。参数说明:platform(渠道名)。注:仅debug模式为true时生效。| | setListener(ADJgInterstitialAdListener listener) | 设置广告相关状态。参数说明:listener(广告状态监听器)。| | setSceneId(String sceneId) | 设置广告场景id,用于区分同一个广告位在不同场景下使用的数据。参数说明:sceneId(场景ID)。| | loadAd(String posId) | 请求广告并展示。参数说明:posId(广告位ID)。| | release() | 释放广告。| **ADJgExtraParams** cn.jiguang.jgssp.ad.entity.ADJgExtraParams | 方法名 | 介绍 | | ------------ | ---- | | ADJgExtraParams.Builder().build() | 构造方法。| | setVideoWithMute(boolean isMute) | 视频静音设置。参数说明:isMute(true:静音、false:不静音,默认:true)。| **ADJgInterstitialAdListener** cn.jiguang.jgssp.ad.listener.ADJgInterstitialAdListener | 方法名 | 介绍 | | ------------ | ---- | | onAdReceive(ADJgInterstitialAdInfo adInfo) | 广告加载成功回调。| | onAdExpose(ADJgInterstitialAdInfo adInfo) | 广告曝光回调。| | onAdClick(ADJgInterstitialAdInfo adInfo) | 广告点击回调。| | onAdClose(ADJgInterstitialAdInfo adInfo) | 广告关闭回调。| | onAdReady(ADJgInterstitialAdInfo adInfo) | 广告准备完毕回调。| | onAdFailed(ADJgError error) | 广告获取失败回调。| **ADJgInterstitialAdInfo** cn.jiguang.jgssp.ad.data.ADJgInterstitialAdInfo | 方法名 | 介绍 | | ------------ | ---- | | showInterstitial(Activity activity) | 展示广告。参数说明:activity(当前页面activity对象)。| | getPlatform() | 获取三方广告平台名称,返回String类型。| | getECPM() | 获取ECPM,返回Double类型(单位:元)。| | getEcpmPrecision() | ECPM类型,返回String类型(accurate:精准、platform_assignment:平台指定、estimate:估算)。| #### 6.6.2 插屏广告加载并展示 ```java ADJgInterstitialAd interstitialAd = new ADJgInterstitialAd(Activity activity); // 设置插屏广告监听 interstitialAd.setListener(new ADJgInterstitialAdListener() { @Override public void onAdReceive(ADJgInterstitialAdInfo adInfo) { // 广告获取成功回调 // 插屏广告对象一次成功拉取的广告数据只允许展示一次 // 展示广告 adInfo.showInterstitial(Activity activity); } @Override public void onAdReady(ADJgInterstitialAdInfo adInfo) { // 广告准备完毕回调 } @Override public void onAdExpose(ADJgInterstitialAdInfo adInfo) { // 广告展示回调,有展示回调不一定是有效曝光,如网络等情况导致上报失败 } @Override public void onAdClick(ADJgInterstitialAdInfo adInfo) { // 广告点击回调,有点击回调不一定是有效点击,如网络等情况导致上报失败 } @Override public void onAdClose(ADJgInterstitialAdInfo adInfo) { // 广告点击关闭回调 } @Override public void onAdFailed(ADJgError error) { // 广告获取失败回调 } }); // 加载插屏广告 interstitialAd.loadAd(String posId); ```

注意广告对象的获取是异步的,请在onAdReceive或onAdReady回调后展示广告

> [插屏广告示例详情](https://gitee.com/jiguang-official/adjg-sdk-android/blob/master/app/src/main/java/com/jiguangssp/addemo/activity/InterstitialAdActivity.java) > ### 6.10 备注 具体的接入代码和流程,请参考Demo ## 7. 常见问题和错误调试 > [常见问题和错误调试及错误码](https://gitee.com/jiguang-official/adjg-sdk-android/blob/master/AdapterErrorCode)