2 Star 1 Fork 0

jiguang-official / ADJgSdk-Android

Create your Gitee Account
Explore and code with more than 8 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
contribute
Sync branch
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

ADJgSdk Android Sdk——接入文档 V3.7.1.02171

目录

[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 快手 快手
mintegral Mintegral(汇量) Mobvsita
jiguang 极光联盟 极光联盟

1.4 ADJg必添包容量

Name 大小 版本号 MD5
ADJg基础包 0.3M V3.7.1.02171 905b424236e23abace1c1297df6ddd64
OAID 1.1M

1.5 三方广告平台适配器+三方广告sdk总容量

Name 容量 版本号 MD5
jgads 1M v1.3.5.11294 0edc8bf5b87249c6dbf57839083f4502
tianmu 1.4M v2.0.1.02151 96f1571a36c1eef9497526d5eb18ea0c
gdt 1.41M v4.510.1380.02151 c144bb669145aac2632166f544b14dfa
toutiao 4.11M v5.1.0.2.02151 82bc6587fac539dfedbdf472ebe737db
baidu 1.20M v9.26.02151 1c7c6466aaccd2609ca397803428058d
ksad 2.30M v3.3.38.02151 4356df0b0e32f7f99d9308d256cb1469
mintegral 2.80M v16.3.57.02151 91cce511c030c92b5f22a4914909c6c8
jiguang 0.67M v5.0.6.03011 2e84fb765148742528b092c4e3123c7d

2. 支持的广告类型

2.1 普通广告

类型 简介 适用场景
开屏广告 开屏广告以APP启动作为曝光时机的模板广告,需要将开屏广告视图添加到承载的广告容器中,提供5s可感知广告展示 APP启动界面常会使用开屏广告
Banner广告 Banner广告是横向贯穿整个可视页面的模板广告,需要将Banner广告视图添加到承载的广告容器中 任意界面的固定位置,不建议放在RecyclerView、List这种滚动布局中当item
信息流广告 信息流广告集合原生自渲染广告和模板广告两种,可以通过后台配置和SDK相关方法判断进行不同的渲染,以满足不同的样式需求 信息流列表,轮播控件,固定位置都是较为适合
激励视频广告 将短视频融入到APP场景当中,用户观看短视频广告后可以给予一些应用内奖励 常出现在游戏的复活、任务等位置,或者网服类APP的一些增值服务场景
插屏广告 插屏广告是移动广告的一种常见形式,在应用流程中弹出,当应用展示插屏广告时,用户可以选择点击广告,访问其目标网址,也可以将其关闭并返回应用 在应用执行流程的自然停顿点,适合投放这类广告

2.2 极光联盟Push广告类型接入

极光联盟接入必备配置,极光联盟渠道特有广告样式(非极光Ads)对接地址

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文件中引入如下配置:

allprojects {
    repositories {
        ...
        google()
        jcenter()
        mavenCentral()
        //天目渠道maven地址
        maven { url "https://maven.admobile.top/repository/maven-releases/" }  
        //汇量渠道maven地址(可选)
        maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_support/" }
    }
}

5.1.2 添加ADJgSdk和需要的AdapterSdk

将广告所需要的依赖集成进去,AdapterSdk可根据接入平台情况进行选择接入。

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:3.7.1.02171"

    //OAID ,必须的 
    implementation "cn.jiguang.sdk.ad:oaid:1.0.25.08024"
    注意注意注意
    需要在assets加入supplierconfig.json文件不然oaid无法生效
    注意注意注意
    implementation(name: 'oaid_sdk_1.0.25', ext: 'aar')

    // 极光Ads,必须的
    implementation "cn.jiguang.sdk.ad.adapter:jgads:1.3.5.11294"

    // 天目,必须的
    implementation "cn.jiguang.sdk.ad.adapter:tianmu:2.0.1.02151"

    // 优量汇AdapterSdk,可选的
    implementation "cn.jiguang.sdk.ad.adapter:gdt:4.510.1380.02151"

    // 头条AdapterSdk,可选的
    implementation "cn.jiguang.sdk.ad.adapter:toutiao:5.1.0.2.02151"

    // 百度增强版AdapterSdk,可选的
    implementation "cn.jiguang.sdk.ad.adapter:baidu-enhanced:9.26.02151"

    // 快手AdapterSdk,可选的
    implementation "cn.jiguang.sdk.ad.adapter:ksadbase:3.3.38.02151"

    // Mintegral(汇量) AdapterSdk,可选的
    implementation "cn.jiguang.sdk.ad.adapter:mintegral:16.3.57.02151"

    // 极光联盟 AdapterSdk,可选的,和极光Ads不是同一个广告SDK
    implementation "cn.jiguang.sdk.ad.adapter:jiguang:5.0.6.03011"
    implementation 'cn.jiguang.sdk:jcore:4.1.0'

}

5.1.3 注意事项

  • 支持主流架构,x86架构暂不支持

    ndk {
    	// 设置支持的SO库架构,暂不支持x86
    	abiFilters 'armeabi-v7a', 'arm64-v8a'
    }
  • AdapterSdk默认已经集成了三方的广告SDK,如果因为项目中也使用了相同的三方广告SDK而发生冲突,可通过以下方法尝试避免或解决;

  1. 移除己方使用的三方广告SDK和相关配置;

  2. 使用AdapterSdkwithout集成方式,该方式没有集成三方广告SDK和配置,开发者可自行集成三方广告SDK,但是需要注意,我们的AdapterSdk是基于三方广告SDK某个版本开发的,如果自行集成三方广告SDK,需要承担三方广告SDK版本不一致可能引起的兼容性和其他不可预知问题;

    // 优量汇AdapterSdk的without集成示例,其中x.x.x.x为AdapterSdk版本号
    implementation 'cn.jiguang.sdk.ad.adapter:gdt-without:x.x.x.x'
  3. 激励、全屏视频、插屏等广告对象一次成功拉取的广告数据只允许展示一次,还需展示请再次加载广告。

  4. Mintegral(汇量)渠道与微信sdk冲突解决办法 由于Mintegral渠道16.1.7版本支持小程序跳转功能,若媒体已导入opensdk,会导致冲突,可通过以下方式移除Mintegral适配器中的opensdk

    ('cn.jiguang.sdk.ad.adapter:mintegral:16.3.57.02151') {
            exclude group: "com.tencent.mm.opensdk", module: "wechat-sdk-android"
        }

5.2 OAID支持

Android10之后IMEI等数据无法获取,这对广告投放将产生一定影响,所以移动安全联盟(MSA)提出OAID来代替IMEI参与广告投放决策,OAID的支持会在一定程度上影响广告收益;

OAID是必须集成项,没有集成将会抛出异常提醒开发者,OAID集成并不繁琐,SDK中已经进行了OAID的封装,只需以下几步即可完成OAID的支持;

  1. 导入安全联盟的OAID支持库 oaid_sdk_1.0.25.aar,可在Demo的libs目录下找到,强烈建议使用和Demo中一样版本的OAID库(包括项目中已存在的依赖的oaid版本);
    媒体如果想获取ADJg中的oaid,可以使用改方法进行获取ADJgSdk.getInstance().getOAID(),由于oaid的获取是异步的,可能获取到空字符串的情况。

  2. 将Demo中assets文件夹下的supplierconfig.json文件复制到自己的assets目录下并按照supplierconfig.json文件中的说明进行OAID的 AppId 配置,supplierconfig.json文件名不可修改。需要设置 appid 的部分需要去对应厂商的应用商店的应用信息中查看。;

  3. 添加以下混淆配置;

    -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 <methods>;}
  4. 修改AndroidManifest.xml,OAID SDK minSdkVersion为21,如果应用的minSdkVersion小于21,则添加:

    // 如果导入后有冲突可以不添加,jg中已经添加过了
    <uses-sdk tools:overrideLibrary="com.bun.miitmdid"/>

PS:需要更多帮助可参考目录下《移动智能终端补充设备标识体系统一调用SDK开发者说明文档》;

5.3 权限申请

使用SDK时可能需要以下权限,为了保证使用广告的正确,请在6.0及以上的手机中使用SDK前及时申请。

<!-- 广告必须的权限允许网络访问 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 广告必须的权限允许安装未知来源权限如下载类广告下载完成后唤起安卓 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<!-- 广告必须的权限地理位置权限获取位置信息用于广告投放精准广告投放及反作弊 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<!-- 如果有视频相关的广告播放请务必添加屏幕保持唤醒不锁屏部分渠道未添加该权限时会出现视频类广告黑屏-->
<uses-permission android:name="android.permission.WAKE_LOCK" />

<!-- 如果接入了优量汇渠道必须加入以下权限不然会导致优量汇填充失败 -->
<!-- 允许应用获取 MAC 地址广告投放及广告监测归因反作弊 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 允许应用检测网络状态SDK 会根据网络状态选择是否发送数据 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<!-- 影响广告填充强烈建议的权限获取设备信息允许应用获取手机状态包括手机号码IMEIIMSI权限等)。广告投放及广告监测归因反作弊 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<!-- 为了提高广告收益建议设置的权限写入权限用于下载类广告数据写入 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 为了提高广告收益建议设置的权限读取权限用于下载类广告数据读取如判断是否已下载过该APK避免重复下载-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<!-- 为了提高广告收益建议设置的权限获取粗略位置信息精准广告投放及反作弊 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

5.4 兼容配置

5.4.1 FileProvider配置

  1. 适配Anroid7.0以及以上,请在AndroidManifest中添加如下代码:
  • 如果支持库是support

    <provider
    	  android:name="android.support.v4.content.FileProvider"
        android:authorities="${applicationId}.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
        		android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/adjg_file_paths" />
    </provider>
  • 如果支持库为androidx

    <provider
    	  android:name="androidx.core.content.FileProvider" 
        android:authorities="${applicationId}.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
        		android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/adjg_file_paths" />
    </provider>
  1. 在res/xml目录下(如果xml目录不存在需要手动创建),新建xml文件adjg_file_paths,在该文件中加入如下配置,如果存在相同android:authorities的provider,请将paths标签中的路劲配置到自己的xml文件中:
<?xml version="1.0" encoding="utf-8"?>  
<paths xmlns:android="http://schemas.android.com/apk/res/android">  
    <external-path name="external_path" path="." />
    <external-files-path name="external_files_path" path="." />  
</paths>

PS  :  为了适配下载和安装相关功能,在工程中引用的包 com.android.support:support-v4:x.x.x请使用26.0.0及以上版本。

  1. 使用AdapterSdkwithout集成方式,需要对相应ADN进行配置。正常对接方式内部已配置完成,不用再次配置。
  <!--优量汇配置开始-->
  <provider
      android:name="com.qq.e.comm.GDTFileProvider"
      android:authorities="${applicationId}.gdt.fileprovider"
      android:exported="false"
      android:grantUriPermissions="true">
      <meta-data
          android:name="android.support.FILE_PROVIDER_PATHS"
          android:resource="@xml/gdt_file_path" />
  </provider>
  <!--优量汇配置结束-->

  <!--头条配置开始-->
  <provider
      android:name="com.bytedance.sdk.openadsdk.TTFileProvider"
      android:authorities="${applicationId}.TTFileProvider"
      android:exported="false"
      android:grantUriPermissions="true">
      <meta-data
          android:name="android.support.FILE_PROVIDER_PATHS"
          android:resource="@xml/adjg_toutiao_file_paths" />
  </provider>

  <provider
      android:name="com.bytedance.sdk.openadsdk.multipro.TTMultiProvider"
      android:authorities="${applicationId}.TTMultiProvider"
      android:exported="false" />
  <!--头条配置结束-->

  <!--百度配置开始-->
  <activity
      android:name="com.baidu.mobads.sdk.api.AppActivity"
      android:configChanges="screenSize|keyboard|keyboardHidden|orientation"
      android:theme="@android:style/Theme.NoTitleBar"/>

  <activity
      android:name="com.baidu.mobads.sdk.api.MobRewardVideoActivity"
      android:configChanges="screenSize|orientation|keyboardHidden"
      android:launchMode="singleTask"
      android:theme="@android:style/Theme.Translucent.NoTitleBar" />

  <provider
      android:name="com.baidu.mobads.sdk.api.BdFileProvider"
      android:authorities="${applicationId}.bd.provider"
      android:exported="false"
      android:grantUriPermissions="true">
      <meta-data
          android:name="android.support.FILE_PROVIDER_PATHS"
          android:resource="@xml/bd_file_paths" />
  </provider>
  <!--百度配置结束-->

  <!--汇量配置开始-->
  <!--激励视频和插屏视频广告所需Activity-->
  <activity
      android:name="com.mbridge.msdk.reward.player.MBRewardVideoActivity"
      android:configChanges="orientation|keyboardHidden|screenSize"
      android:excludeFromRecents="true" />
  <!--插屏图片广告所需Activity-->
  <activity
      android:name="com.mbridge.msdk.interstitial.view.MBInterstitialActivity"
      android:configChanges="orientation|screenSize"
      android:excludeFromRecents="true" />
  <!--交互广告所需Activity-->
  <activity
      android:name="com.mbridge.msdk.interactiveads.activity.InteractiveShowActivity"
      android:excludeFromRecents="true"
      android:configChanges="keyboardHidden|orientation|screenSize"
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>

  <receiver android:name="com.mbridge.msdk.click.AppReceiver">
      <intent-filter>
          <action android:name="android.intent.action.PACKAGE_ADDED" />
          <data android:scheme="package" />
      </intent-filter>
  </receiver>
  <!--汇量配置结束-->

5.4.2 网络配置

需要在 AndroidManifest.xml 添加依赖声明uses-library android:name="org.apache.http.legacy" android:required="false", 且 application标签中添加 android:usesCleartextTraffic="true",适配网络http请求,否则 SDK可能无法正常工作,接入代码示例如下:

<application
    android:name=".MyApplication"
        ... ...
    android:usesCleartextTraffic="true">

    <uses-library
        android:name="org.apache.http.legacy"
        android:required="false" />
    ... ...
</application>

5.4.3 混淆配置

如果打包时开启了混淆配置,请按需添加以下混淆内容,并保证广告资源文件不被混淆

-ignorewarnings
# v4v7如果是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 <fields>;
}

# 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 <methods>;}

# 优量汇广告平台混淆
-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 <methods>;}

# 极光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.** { *; }

# 极光联盟混淆
-dontoptimize
-dontpreverify
-dontwarn cn.jpush.**
-keep class cn.jpush.** { *; }
-dontwarn cn.jiguang.**
-keep class cn.jiguang.** { *; }

# Jgid的混淆规则
-keep class jgssp.com.** { *; }
-keep interface jgssp.com.** { *; }
-keep interface cn.jiguang.jgssp.oaid.IGetter{public *;}

5.5 隐私信息控制开关

为了保证您的App顺利通过检测,结合当前监管关注重点,请务必将ADJgSdk的初始化放在用户同意隐私政策之后。

如合规有更高要求,可以使用以下方法进行控制,但会严重降低广告收益,可根据实际需求进行设置,或联系我发运营人员获取建议。 同时ADJgSDK初始化时开放以下接口,确保mac,imei等设备标识不被读取(目前部分三方广告平台支持):

//【慎改】是否同意隐私政策,将禁用一切设备信息读起严重影响收益
.agreePrivacyStrategy(true)
// 是否可获取定位数据
.isCanUseLocation(true)
// 是否可获取设备信息
.isCanUsePhoneState(true)
// 是否可读取设备安装列表
.isCanReadInstallList(true)
// 是否可读取设备外部读写权限
.isCanUseReadWriteExternal(true)

另外还可从根源上解决设备标识被读取等问题,可对配置清单中的权限增加tools:node="remove"配置; 如下:

<!-- 影响广告填充强烈建议的权限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />
<!-- 为了提高广告收益建议设置的权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove" />

以上操作会对广告填充造成影响,请斟酌使用。

5.6 个性化开关

ADJg的个性化开关可统一控制第三方广告SDK的个性化开关接口,目前支持天目、优量汇、穿山甲、百度、快手、汇量;

// true为开启、false为关闭,请在初始化ADJg后进行控制
ADJgSdk.setPersonalizedAdEnabled(boolean personalized);

5.7 向SDK传入设备标识

统一由可选参数 : CustomDeviceInfoController 进行设置

  • 新增可选参数设置
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 ,若不传或为空值,则不使用oaid信息
                     * @return vaid
                     */
                    @Override
                    public String getVaid() {
                        return super.getVaid();
                    }
                })
                ...
                .build()
);

6. 示例代码

6.1 SDK初始化

在隐私同意后进行SDK的初始化(详情请参考Demo SplashAdActivity.java类)

6.1.1 初始化主要 API

ADJgSdk

cn.jiguang.jgssp.ADJgSdk

方法名 介绍
init(Context context, ADJgInitConfig config) 构造方法。参数说明:context(初始化SDK的上下文对象)、config(初始化配置信息)。
init(Context context, ADJgInitConfig config, ADJgInitListener listener) 构造方法。参数说明:context(初始化SDK的上下文对象)、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,方便异常排查。
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传入设备标识

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 ,若不传或为空值,则不使用oaid信息。

6.1.2 初始化接入示例

// 初始化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, ViewGroup container) 构造方法。参数说明:activity(当前页面activity对象)、container(展示广告视图的父容器)。
ADJgSplashAd(Fragment fragment, ViewGroup container) 构造方法。参数说明:fragment(当前页面fragment对象)、container(展示广告视图的父容器)。
setLocalExtraParams(ADJgExtraParams extraParams) 设置额外参数。参数说明:extraParams(广告额外参数)。
setImmersive(boolean isImmersive) 设置沉浸效果。参数说明:isImmersive(true:沉浸,false:不沉浸,影响跳过按钮位置)。
setOnlySupportPlatform(String platform) 设置广告定向,仅请求某一渠道。参数说明:platform(渠道名)。
setListener(ADJgSplashAdListener listener) 设置广告相关状态。参数说明:listener(广告状态监听器)。
loadAd(String posId) 请求广告并展示。参数说明:posId(广告位ID)。
loadOnly(String posId) 仅请求广告不展示。参数说明:posId(广告位ID)。
loadAd(String posId, ADJgNetworkRequestInfo requestInfo) 请求打底广告并展示,目前支持优量汇、头条、百度、快手。参数说明:posId(广告位ID)、requestInfo(打底广告对象,接口地址Gitee地址Github地址)。
showSplash() 展示广告。使用loadOnly方法去加载广告时,可在onAdReceive回调后去展示广告。
release() 释放广告。

ADJgExtraParams

cn.jiguang.jgssp.ad.entity.ADJgExtraParams

方法名 介绍
ADJgExtraParams.Builder().build() 构造方法。
adSize(ADJgAdSize adSize) 设置开屏视图宽高。参数说明:adSize(设置整个广告视图预期宽高(目前仅头条平台需要,没有接入头条可不设置),单位为px,如果不设置头条开屏广告视图将会以9 : 16的比例进行填充,小屏幕手机可能会出现素材被压缩的情况,大屏幕设备可能出现留白)。

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(广告错误信息)。

6.2.2 开屏广告加载并展示

// 创建开屏广告实例,第一个参数可以是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);

开屏广告示例详情

6.2.3 开屏广告加载与展示分离

仅加载开屏广告
// 创建广告对象的逻辑与6.2.2的案例相同,不同点在loadAd
...
// 仅加载开屏广告
splashAd.loadOnly(String posId);
展示开屏广告
// 需要开发者在onAdReceive回调之后再展示开屏广告
...
public void onAdReceive(ADJgAdInfo adInfo) {
    // 广告获取成功回调...
    // 展示开屏广告
    splashAd.showSplash();
}
...

开屏广告加载与展示分离示例 Gitee地址Github地址

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(渠道名)。
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(广告错误信息)。

6.3.2 开屏广告加载并展示

// 创建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广告示例详情

6.4 信息流广告示例

信息流广告,具备自渲染和模板两种广告样式:自渲染是SDK将返回广告标题、描述、Icon、图片、多媒体视图等信息,开发者可通过自行拼装渲染成喜欢的样式;模板样式则是返回拼装好的广告视图,开发者只需将视图添加到相应容器即可,模板样式的容器高度建议是自适应。 请务必确保自渲染类型广告渲染时包含广告创意素材(至少包含一张图片)、平台logo、广告标识、关闭按钮;模板广告不得被遮挡。 注意,信息流广告点击关闭时,开发者需要在onAdClose回调中将广告容器隐藏或移除,避免如头条渠道点击关闭后视图依旧存在问题

6.4.1 信息流广告主要 API

ADJgBannerAd

cn.jiguang.jgssp.ad.ADJgNativeAd

方法名 介绍
ADJgNativeAd(Activity activity) 构造方法。参数说明:activity(当前页面activity对象)。
ADJgNativeAd(Fragment fragment) 构造方法。参数说明:fragment(当前页面fragment对象)。
setLocalExtraParams(ADJgExtraParams extraParams) 设置额外参数。参数说明:extraParams(广告额外参数)。
setOnlySupportPlatform(String platform) 设置广告定向,仅请求某一渠道。参数说明:platform(渠道名)。
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(自适应高度))。
nativeAdMediaViewSize(ADJgAdSize adSize) 设置广告视图中MediaView的预期宽高。参数说明:adSize(广告视频宽高,目前仅Inmobi平台需要,Inmobi的MediaView高度为自适应,没有接入Inmobi平台可不设置)。
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<ADJgNativeAdInfo> adInfos) 广告加载成功回调。
onAdExpose(ADJgNativeAdInfo adInfo) 广告展示回调。
onAdClick(ADJgNativeAdInfo adInfo) 广告点击回调。
onAdClose(ADJgNativeAdInfo adInfo) 广告关闭回调,在此回调中移除页面中的视图。
onAdFailed(ADJgError error) 广告失败回调。参数说明:error(广告错误信息)。
onRenderFailed(ADJgNativeAdInfo adInfo, ADJgError error) 广告失败回调。参数说明:error(广告错误信息)。

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类,否则转为ADJgNativeExpressAdInfo类

模板广告对象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 获取的是多媒体广告视图。
registerViewForInteraction(ViewGroup container, View... actionViews) void 注册广告视图。参数说明:container(广告容器,若对接优量汇自渲染,此处一定要传入com.qq.e.ads.nativ.widget.NativeAdContainer布局,否则优量汇渠道无法曝光)、
actionViews(可点击的布局)
registerCloseView(View close) void 注册关闭按钮。参数说明:close(点击关闭的view,不注册将不会回调onAdClose事件)

6.4.2 信息流广告加载并展示

6.4.2.1 信息流广告加载

// 创建信息流广告实例
ADJgNativeAd nativeAd = new ADJgNativeAd(Activity activity);
int widthPixels = getResources().getDisplayMetrics().widthPixels;
// 创建额外参数实例
ADJgExtraParams extraParams = new ADJgExtraParams.Builder()
    // 设置整个广告视图预期宽高(目前仅头条,艾狄墨搏平台需要,没有接入头条、艾狄墨搏可不设置),单位为px,高度如果小于等于0则高度自适应
    .adSize(new ADJgAdSize(widthPixels, 0))
   	.build();
// 设置一些额外参数,有些平台的广告可能需要传入一些额外参数,如果有接入头条、Inmobi平台,该参数必须设置
nativeAd.setLocalExtraParams(extraParams);

// 设置广告监听
nativeAd.setListener(new ADJgNativeAdListener() {
    @Override
    public void onRenderFailed(ADJgNativeAdInfo adInfo, ADJgError error) {
      	// 广告渲染失败,可在此回调中移除视图和释放广告对象
    }

    @Override
    public void onAdReceive(List<ADJgNativeAdInfo> 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 信息流广告展示-模板

// 判断广告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 信息流广告展示-自渲染

// 判断广告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的点击事件,且这些View都应该是com.qq.e.ads.nativ.widget.NativeAdContainer的子View
    nativeFeedAdInfo.registerViewForInteraction((ViewGroup) itemView, rlAdContainer, tvAdType);

    // 注册关闭按钮,将关闭按钮点击事件交于SDK托管,以便于回调onAdClose
    // 务必最后调用
    nativeFeedAdInfo.registerCloseView(ivClose);
}

信息流自渲染广告示例详情 信息流模板广告示例详情

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(渠道名)。
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地址Github地址)。
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对象)。

6.5.2 激励视频广告加载并展示

// 创建激励视频广告实例
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);

激励视频广告示例详情

Android-ADJgSDK 激励视频服务端验证使用说明

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(渠道名)。
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对象)。

6.6.2 插屏广告加载并展示

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回调后展示广告

插屏广告示例详情

6.10 备注

具体的接入代码和流程,请参考Demo

7. 常见问题和错误调试

常见问题和错误调试及错误码

About

广告聚合SdkDemo-Android expand collapse
Java
Cancel

Releases

No release

Contributors

All

Activities

Load More
can not load any more
Java
1
https://gitee.com/jiguang-official/adjg-sdk-android.git
git@gitee.com:jiguang-official/adjg-sdk-android.git
jiguang-official
adjg-sdk-android
ADJgSdk-Android
master

Search