# 天目Ads Sdk——接入文档 V3.0.0.1SDK名称: 天目Ads SDK
开发者: 杭州艾狄墨搏信息服务有限公司
更新日期: 2025-05-19
功能介绍: 天目Ads SDK是一款全面的 APP 广告变现解决方案,支持多种广告格式,包括横幅、插屏和视频广告。它具有精准和详细的数据分析功能,帮助开发者优化广告投放和提升收益。
SDK 下载地址在新窗口打开
查看更新日志在新窗口打开
查看接入文档在新窗口打开
隐私政策在新窗口打开
合规指引在新窗口打开
用户协议在新窗口打开
# 1. 概述# 1.1 概述尊敬的开发者朋友,欢迎您使用天目Ads SDK。通过本文档,您可以快速完成广告SDK的集成。
注意:本SDK仅支持中国大陆地区;如需发布到Google Play,请勿引入本SDK及相关依赖文件。
将天目接入到聚合平台案例
天目聚合到Topon中在新窗口打开
天目聚合到Gromore中在新窗口打开
# 2. 支持的广告类型类型简介适用场景开屏广告开屏广告以APP启动作为曝光时机的模板广告,需要将开屏广告视图添加到承载的广告容器中,提供5s可感知广告展示APP启动界面常会使用开屏广告Banner广告Banner广告是横向贯穿整个可视页面的模板广告,需要将Banner广告视图添加到承载的广告容器中任意界面的固定位置,不建议放在RecyclerView、List这种滚动布局中当item信息流自渲染广告信息流自渲染广告,可自行设计样式,以满足不同的样式需求信息流列表,轮播控件,固定位置都是较为适合信息流模板广告信息流模板广告,支持上文下图、下图上文、左图右文、右图左文、纯图信息流列表,轮播控件,固定位置都是较为适合插屏广告插屏广告是移动广告的一种常见形式,在应用流程中弹出,当应用展示插屏广告时,用户可以选择点击广告,访问其目标网址,也可以将其关闭并返回应用在应用执行流程的自然停顿点,适合投放这类广告激励视频广告将短视频融入到APP场景当中,用户观看短视频广告后可以给予一些应用内奖励常出现在游戏的复活、任务等位置,或者网服类APP的一些增值服务场景# 3. Demo下载链接TianmuDemo-演示APK下载地址在新窗口打开
# 4. SDK版本说明SDK版本更新日志在新窗口打开
# 5. SDK接入流程# 5.1 添加SDK到工程中接入环境:Android Studio,minSdkVersion 16
# 5.1.1 添加仓库地址首先需要在项目的build.gradle文件中引入如下配置:
allprojects {
repositories {
...
google()
jcenter()
mavenCentral()
// 添加以下仓库地址
maven { url "https://maven.admobile.top/repository/maven-releases/" }
}
}
# 5.1.2 添加TianmuSdk将广告所需要的依赖集成进去
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'
// Tianmu广告SDK
implementation 'cn.admobiletop.adsuyi.ad.third:tianmu:3.0.0.1'
}
# 5.1.3 注意事项支持主流架构,x86架构暂不支持ndk {
// 设置支持的SO库架构,暂不支持x86
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
引入了Android R的 标签,需要对gradle版本进行限制,限制范围为:3.3.3、 3.4.3、 3.5.4、3.6.4、4.0.1 ,开发者根据自身情况酌情升级# 5.3 权限申请使用SDK时可能需要以下权限,为了保证使用广告的正确,请在6.0及以上的手机中使用SDK前及时申请。
# 5.4 兼容配置# 5.4.1 网络配置需要在 AndroidManifest.xml 添加依赖声明uses-library android:name="org.apache.http.legacy" android:required="false", 且 application标签中添加 android:usesCleartextTraffic="true",适配网络http请求,否则 SDK可能无法正常工作,接入代码示例如下:
android:name=".MyApplication" ... ... android:usesCleartextTraffic="true"> android:name="org.apache.http.legacy" android:required="false" /> ... ...
# 5.4.2 混淆配置如果打包时开启了混淆配置,请按需添加以下混淆内容,并保证广告资源文件不被混淆
-keep class com.tianmu.**{ *; }
-keep class tianmu.com.** { *; }
-keep interface tianmu.com.** { *; }
# 5.5 隐私信息控制开关为了保证您的App顺利通过检测,结合当前监管关注重点,我们可以将TianmuSdk的初始化放在用户同意隐私政策之后。
如合规有更高要求,可以使用以下方法进行控制,但会严重降低广告收益,可根据实际需求进行设置,或联系我发运营人员获取建议。 同时TianmuSDK初始化时开放以下接口,确保mac,imei等设备标识不被读取:
TianmuSDK.getInstance().init(this, new TianmuInitConfig.Builder()
...
//【慎改】是否同意隐私政策,将禁用一切设备信息读起严重影响收益
.agreePrivacyStrategy(true)
// 是否可获取定位数据
.isCanUseLocation(true)
// 是否可获取设备信息
.isCanUsePhoneState(true)
...
.build());
# 5.6 设备标识# 5.6.1 OAID支持Android10之后IMEI等数据无法获取,这对广告投放将产生一定影响,所以移动安全联盟(MSA)提出OAID来代替IMEI参与广告投放决策,OAID的支持会在一定程度上影响广告收益和广告填充;
OAID集成并不繁琐,可参考OAID官网进行集成链接在新窗口打开
# 5.6.2 向SDK传入设备标识 注意,移除之前版本初始化OAID设置方法:
isCanUseOAID()
setOAID()
统一由可选参数 : TianmuCustomController 进行设置
新增可选参数设置,配合隐私信息控制开关一起使用TianmuSDK.getInstance().init(this, new TianmuInitConfig.Builder()
...
.setTianmuCustomController(new TianmuCustomController() {
/**
* 当isCanUsePhoneState=false时,可传入imei信息,天目使用您传入的imei信息
* @return imei信息
*/
@Override
public String getDevImei() {
return super.getDevImei();
}
/**
* 当isCanUsePhoneState=false时,可传入AndroidId信息,天目使用您传入的AndroidId信息
* @return androidid信息
*/
@Override
public String getAndroidId() {
return super.getAndroidId();
}
/**
* 当isCanUseLocation=false时,可传入地理位置信息,天目使用您传入的地理位置信息
* @return 极光地理位置参数JUnionLocationProvider
*/
@Override
public TianmuLocationProvider getTianmuLocation() {
return super.getTianmuLocation();
}
/**
* 当isCanUseWifiState=false时,可传入Mac地址信息,天目使用您传入的Mac地址信息
* @return Mac地址
*/
@Override
public String getMacAddress() {
return super.getMacAddress();
}
/**
* 开发者可以传入oaid ,若不传或为空值,则不使用oaid信息
* @return oaid
*/
@Override
public String getDevOaid() {
return super.getDevOaid();
}
/**
* 开发者可以传入vaid ,若不传或为空值,则不使用vaid信息
* @return vaid
*/
@Override
public String getDevVaid() {
return super.getDevVaid();
}
})
...
.build());
# 5.7 个性化开关// 设置个性化广告,true:开启、false:关闭
TianmuSDK.setPersonalizedAds(boolean enablePersonalized);
# 6. 示例代码# 6.1 SDK初始化在Application或Activity中进行SDK的初始化(详情请参考Demo)
# 6.1.1 初始化主要 APITianmuSDK
com.tianmu.TianmuSDK
方法名介绍init(Context context, TianmuInitConfig config)构造方法。参数说明:context(初始化SDK的上下文对象)、config(初始化配置信息)。init(Context context, TianmuInitConfig config, TianmuInitListener listener)构造方法。参数说明:context(初始化SDK的上下文对象)、config(初始化配置信息)、listener(初始化状态监听)。setPersonalizedAds(boolean enablePersonalized)设置个性化推荐开关。参数说明:enablePersonalized(true:开启,false:关闭, 默认:true)。setCheckCacheApk(boolean checkCacheApk)检测下载完成但未安装的下载类广告。参数说明:checkCacheApk(true:开启,false:关闭, 默认:true)。setCanUseLocation(boolean isCanUseLocation)设置SDK是否可以使用定位信息,静态方法可随时调用。参数说明:isCanUseLocation(true:开启,false:关闭, 默认:true)。setCanUsePhoneState(boolean isCanUsePhoneState)设置SDK是否可以使用IMEI等设备信息,静态方法可随时调用。参数说明:isCanUsePhoneState(true:开启,false:关闭, 默认:true)。setCanUseWifiState(boolean isCanUseWifiState )设置SDK是否可以使用WIFI信息,静态方法可随时调用。参数说明:isCanUseWifiState(true:开启,false:关闭, 默认:true)。TianmuInitConfig
com.tianmu.config.TianmuInitConfig
方法名介绍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)。setMultiprocess(boolean isMultiprocess)是否支持多进程初始化。参数说明:isMultiprocess(true:支持,false:不支持, 默认:false),应用如需支持多进获取展示广告,请在每个进程中都初始化SDK。setTianmuCustomController(TianmuCustomController customController)自定义设备信息。可选参数。 请参考5.6.2 向SDK传入设备标识 setWXAppId(String wxAppId)设置微信AppId。参数说明:wxAppId(微信AppId)TianmuCustomController
com.tianmu.config.TianmuCustomController
方法名介绍getDevImei()当isCanUsePhoneState=false时,可传入imei信息,天目使用您传入的imei信息。getAndroidId()当isCanUsePhoneState=false时,可传入AndroidId信息,天目使用您传入的AndroidId信息。getTianmuLocation()当isCanUseLocation=false时,可传入地理位置信息,天目使用您传入的地理位置信息。getMacAddress()当isCanUseWifiState=false时,可传入Mac地址信息,天目使用您传入的Mac地址信息。getDevOaid()开发者可以传入oaid ,若不传或为空值,则不使用oaid信息。getDevVaid()开发者可以传入vaid ,若不传或为空值,则不使用vaid信息。# 6.1.2 初始化接入示例// 初始化Tianmu广告SDK
TianmuSDK.getInstance().init(this, new TianmuInitConfig.Builder()
// 设置AppId,必须的
.appId(String appId)
// 是否开启Debug,开启会有详细的日志信息打印
// 注意上线后请置为false
.debug(BuildConfig.DEBUG)
...
.build());
PS :AppId通过后台配置生成,初始化必须在主线程中进行。
# 6.2 开屏广告开屏广告建议在闪屏页进行展示,开屏广告的宽度和高度取决于容器的宽高,会撑满广告容器;开屏广告的高度必须大于等于屏幕高度(手机屏幕完整高度,包括状态栏之类)的75%,否则onAdFailed方法会被回调。
# 6.2.1 开屏广告主要 APISplashAd
com.tianmu.ad.SplashAd
方法名介绍SplashAd(Context context)构造方法。参数说明:context(加载广告的上下文对象)。SplashAd(Context context, View skipView)构造方法。参数说明:context(加载广告的上下文对象)、skipView(自定义跳过按钮)。setImmersive(boolean isImmersive)设置沉浸效果。参数说明:isImmersive(true:沉浸,false:不沉浸, 目前仅影响默认跳过按钮位置)。setCountDownTime(long countDownTime)设置倒计时跳过时长。参数说明:countDownTime([3000ms~5000ms],默认5000ms)。setListener(SplashAdListener listener)设置广告相关状态。参数说明:listener(广告状态监听器)。setSensorDisable(boolean isSensorDisable)是否禁用传感器。参数说明:isSensorDisable(true:禁用,false:启用,默认false)。setMute(boolean isMute)视频静音设置。参数说明:isMute(true:静音、false:不静音,默认:true)。loadAd(String posId)请求广告。参数说明:posId(广告位ID)。release()释放广告。SplashAdListener
com.tianmu.ad.listener.SplashAdListener
方法名介绍onAdTick(long millisUntilFinished)广告倒计时剩余时长回调。参数说明:millisUntilFinished(剩余时间,单位:秒))。onAdReceive(SplashAdInfo adInfo)广告加载成功回调。onAdExpose(SplashAdInfo adInfo)广告展示回调。onAdClick(SplashAdInfo adInfo)广告点击回调。onAdSkip(SplashAdInfo adInfo)广告跳过回调,用户点击跳过按钮时触发。onAdClose(SplashAdInfo adInfo)广告关闭回调,用户点击跳过按钮、触发落地页后返回开屏页、倒计时结束,则触发。onAdFailed(TianmuError error)广告失败回调。参数说明:error(广告错误信息)。SplashAdInfo
com.tianmu.ad.bean.SplashAdInfo
方法名介绍sendLossNotice(int price, @BidLossNotice int reason)竞败上报。参数说明:price(回传竞赢价格(ecpm),单位:分)、reason(竞败原因)。getBidPrice()获取竞价价格(ecpm),单位:分。getBidFloor()获取底价(ecpm),单位:分。isOvertime()广告是否超时(广告需要在10分钟内展示)。getSplashAdView()获取广告视图。render()渲染广告,请在上述方法最后调用。# 6.2.2 开屏广告接入示例SplashAd splashAd = new SplashAd(Context context);
splashAd.setListener(new SplashAdListener() {
@Override
public void onAdTick(long millisUntilFinished) {
// 倒计时剩余时长(单位:秒)
}
@Override
public void onAdReceive(SplashAdInfo splashAdInfo) {
// 广告获取成功回调,在此回调中展示广告
// 获取开屏广告视图
View view = splashAdInfo.getSplashAdView();
// 将广告视图添加到容器中,注意容器高度要大于屏幕75%
flContainer.addView(view);
// 渲染广告,一定要最后调用
splashAdInfo.render();
}
@Override
public void onAdExpose(SplashAdInfo splashAdInfo) {
// 广告展示回调
}
@Override
public void onAdClick(SplashAdInfo splashAdInfo) {
// 广告点击回调
}
@Override
public void onAdSkip(SplashAdInfo splashAdInfo) {
// 广告跳过回调
}
@Override
public void onAdClose(SplashAdInfo splashAdInfo) {
// 广告关闭回调,可在此处进入应用首页
}
@Override
public void onAdFailed(TianmuError error) {
// 广告失败回调,可在此处进入应用首页
}
});
splashAd.loadAd(String posId);
开屏广告示例详情在新窗口打开
# 6.3 横幅广告Banner横幅广告建议放置在 固定位置,而非ListView、RecyclerView、ViewPager等控件中充当Item,Banner广告支持多种尺寸比例,可在后台创建广告位时配置,Banner广告的宽度将会撑满容器,高度自适应,建议Banner广告容器高度也为自适应。
# 6.3.1 横幅广告主要 APIBannerAd
com.tianmu.ad.BannerAd
方法名介绍BannerAd(Context context, ViewGroup container)构造方法。参数说明:context(加载广告的上下文对象)、container(横幅广告展示容器)。BannerAd(Context context)构造方法,加载展示分离使用。参数说明:context(加载广告的上下文对象)。setListener(BannerAdListener listener)设置广告相关状态。参数说明:listener(广告状态监听器)。loadAd(String posId)请求广告。参数说明:posId(广告位ID)。release()释放广告。BannerAdListener
com.tianmu.ad.listener.BannerAdListener
方法名介绍onAdReceive(BannerAdInfo adInfo)广告加载成功回调。onAdExpose(BannerAdInfo adInfo)广告展示回调。onAdClick(BannerAdInfo adInfo)广告点击回调。onAdClose(BannerAdInfo adInfo)广告关闭回调。onAdFailed(TianmuError error)广告失败回调。参数说明:error(广告错误信息)。BannerAdInfo
com.tianmu.ad.bean.BannerAdInfo
方法名介绍getAdView()获取广告视图。render()渲染广告,请在上述方法最后调用。# 6.3.2 横幅广告接入示例BannerAd bannerAd = new BannerAd(Context context, ViewGroup container);
bannerAd.setListener(new BannerAdListener() {
@Override
public void onAdExpose(BannerAdInfo bannerAdInfo) {
// 广告展示回调
}
@Override
public void onAdClick(BannerAdInfo bannerAdInfo) {
// 广告点击回调
}
@Override
public void onAdClose(BannerAdInfo bannerAdInfo) {
// 广告关闭回调
}
@Override
public void onAdReceive(BannerAdInfo bannerAdInfo) {
// 广告获取成功回调
}
@Override
public void onAdFailed(TianmuError error) {
// 广告失败回调
}
});
bannerAd.loadAd(String posId);
Banner广告示例详情在新窗口打开
# 6.4 信息流自渲染广告信息流自渲染广告,可根据NativeAdInfo返回的素材自定义样式。 注意,信息流广告点击关闭时,开发者需要在onAdClose回调中将广告容器隐藏或移除
# 6.4.1 信息流自渲染广告主要 APINativeAd
com.tianmu.ad.NativeAd
方法名介绍NativeAd(Context context)构造方法。参数说明:context(加载广告的上下文对象)。setMute(boolean isMute)视频静音设置。参数说明:isMute(true:静音、false:不静音,默认:true)。setListener(NativeAdListener listener)设置广告相关状态。参数说明:listener(广告状态监听器)。loadAd(String posId)请求广告。参数说明:posId(广告位ID)。release()释放广告。NativeAdListener
com.tianmu.ad.listener.NativeAdListener
方法名介绍onAdReceive(List
com.tianmu.ad.bean.NativeAdInfo
方法名介绍sendLossNotice(int price, @BidLossNotice int reason)竞败上报。参数说明:price(回传竞赢价格(ecpm),单位:分)、reason(竞败原因)。getBidPrice()获取竞价价格(ecpm),单位:分。getBidFloor()获取底价(ecpm),单位:分。isOvertime()广告是否超时(广告需要在10分钟内展示)。isVideo()判断素材是否包含视频。getMediaView(ViewGroup container)获取素材中的视频,获取前请通过isVideo()方法进行判断。setVideoListener(VideoListener listener)设置视频相关状态回调。参数说明:listener(视频状态监听器)getTitle()广告标题。getDesc()广告描述。getImageUrl()广告图片。getImageUrls()广告图片组。getAdSource()广告来源。getAdTarget()广告标识,当getAdSource()不为空时,该字段将返回“广告”getAppInfo()获取六要素信息,返回AppInfo对象registerCloseView(View ivClose)注册视图关闭事件。registerView(ViewGroup viewGroup, View... views)注册视图曝光和点击事件。参数说明:viewGroup(曝光检测视图)、views(广告可被点击视图)。com.tianmu.ad.bean.AppInfo
方法名介绍getName()应用名。getDeveloper()开发者名。getVersion()版本号。getIconUrl()应用图标。getPermissionsUrl()权限地址。getPermissionsInfo()权限详情。getPrivacyUrl()隐私地址。getDescriptionUrl()功能地址。getIcp()备案号。VideoListener
com.tianmu.ad.listener.VideoListener
方法名介绍onVideoStart(INativeAd nativeAd)视频播放开始回调。onVideoFinish(INativeAd nativeAd)视频播放完成回调。onVideoPause(INativeAd nativeAd)视频暂停回调。onVideoError(INativeAd nativeAd)视频播放异常。# 6.4.2 信息流自渲染广告接入示例NativeAd nativeAd = new NativeAd(Context context);
nativeAd.setListener(new NativeAdListener() {
@Override
public void onRenderFailed(NativeAdInfo nativeAdInfo, TianmuError error) {
// 广告渲染失败回调
}
@Override
public void onAdReceive(List
// 广告获取成功回调
if (nativeAdInfos == null || nativeAdInfos.size() == 0) {
return;
}
NativeAdInfo nativeAdInfo = nativeAdInfos.get(0);
if (nativeAdInfo != null) {
// 注册视频监听
setVideoListener(nativeAdInfo);
// 判断是否为视频类广告
if (nativeAdInfo.isVideo()) {
// 获取视频视图控件
View videoView = nativeAdInfo.getMediaView(flMaterialContainer);
// 添加进布局
TianmuViewUtil.addAdViewToAdContainer(flMaterialContainer, videoView);
} else {
ImageView imageView = new ImageView(flMaterialContainer.getContext());
ViewGroup.LayoutParams imageViewLayoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
// 获取图片并展示
TianmuSDK.getInstance().getImageLoader().loadImage(imageView.getContext(), nativeAdInfo.getImageUrl(), imageView);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams(imageViewLayoutParams);
TianmuViewUtil.addAdViewToAdContainer(flMaterialContainer, imageView);
}
if (tvTitle != null) {
// 设置标题
tvTitle.setText(nativeAdInfo.getTitle());
}
if (tvDesc != null) {
// 设置正文
tvDesc.setText(nativeAdInfo.getDesc());
}
if (tvAdTarget != null) {
// 设置渠道
tvAdTarget.setText(nativeAdInfo.getAdTarget());
}
// 注册关闭事件
nativeAdInfo.registerCloseView(ivClose);
// 注册视图和点击事件
nativeAdInfo.registerView(rlAdContainer, rlAdContainer);
}
}
@Override
public void onAdExpose(NativeAdInfo nativeAdInfo) {
// 广告展示回调
}
@Override
public void onAdClick(NativeAdInfo nativeAdInfo) {
// 广告点击回调
}
@Override
public void onAdClose(NativeAdInfo nativeAdInfo) {
// 广告关闭回调
}
@Override
public void onAdFailed(TianmuError error) {
// 广告失败回调
}
});
nativeAd.loadAd(String posId);
信息流自渲染广告示例详情在新窗口打开
# 6.5 信息流模板广告信息流模板广告,模板样式则是返回拼装好的广告视图,开发者只需将视图添加到相应容器即可,模板样式的容器高度建议是自适应。 注意,信息流广告点击关闭时,开发者需要在onAdClose回调中将广告容器隐藏或移除``
# 6.5.1 信息流模板广告主要 APINativeExpressAd
com.tianmu.ad.NativeExpressAd
方法名介绍NativeExpressAd(Context context, AdSize adSize)构造方法。参数说明:context(加载广告的上下文对象)、adSize(广告容器宽高)。setMute(boolean isMute)视频静音设置。参数说明:isMute(true:静音、false:不静音,默认:true)。setListener(NativeExpressAdListener listener)设置广告相关状态。参数说明:listener(广告状态监听器)。loadAd(String posId)请求广告。参数说明:posId(广告位ID)。release()释放广告。AdSize
com.tianmu.ad.entity.AdSize
方法名介绍AdSize(int width, int height)构造方法。参数说明:width(容器宽度,单位:px)请传入实际宽度、height(容器高度,单位:px)建议传入0自适应高度。NativeExpressAdListener
com.tianmu.ad.listener.NativeExpressAdListener
方法名介绍onAdReceive(List
com.tianmu.ad.bean.NativeExpressAdInfo
方法名介绍sendLossNotice(int price, @BidLossNotice int reason)竞败上报。参数说明:price(回传竞赢价格(ecpm),单位:分)、reason(竞败原因)。getBidPrice()获取竞价价格(ecpm),单位:分。getBidFloor()获取底价(ecpm),单位:分。isOvertime()广告是否超时(广告需要在10分钟内展示)。getNativeExpressAdView()获取广告视图。render()渲染广告,请在上述方法最后调用。VideoListener
com.tianmu.ad.listener.VideoListener
方法名介绍onVideoStart(INativeAd nativeAd)视频播放开始回调。onVideoFinish(INativeAd nativeAd)视频播放完成回调。onVideoPause(INativeAd nativeAd)视频暂停回调。onVideoError(INativeAd nativeAd)视频播放异常。# 6.5.2 信息流模板广告接入示例NativeExpressAd nativeExpressAd = new NativeExpressAd(Context context, new AdSize(int width, int height));
nativeExpressAd.setListener(new NativeExpressAdListener() {
@Override
public void onRenderFailed(NativeExpressAdInfo nativeExpressAdInfo, TianmuError error) {
// 广告渲染失败
}
@Override
public void onAdReceive(List
// 广告获取成功回调
if (nativeExpressAdInfos == null || nativeExpressAdInfos.size() == 0) {
return;
}
NativeExpressAdInfo nativeExpressAdInfo = nativeExpressAdInfos.get(0);
if (nativeExpressAdInfo != null) {
// 获取广告视图
View view = nativeExpressAdInfo.getNativeExpressAdView();
// 将广告视图添加到容器中
((ViewGroup) itemView).addView(view, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
// 渲染广告,一定要最后调用
nativeExpressAdInfo.render();
}
}
@Override
public void onAdExpose(NativeExpressAdInfo nativeExpressAdInfo) {
// 广告展示回调
}
@Override
public void onAdClick(NativeExpressAdInfo nativeExpressAdInfo) {
// 广告点击回调
}
@Override
public void onAdClose(NativeExpressAdInfo nativeExpressAdInfo) {
// 广告关闭回调
}
@Override
public void onAdFailed(TianmuError error) {
// 广告失败回调
}
});
nativeExpressAd.loadAd(String posId);
信息流模板广告示例详情在新窗口打开
# 6.6 插屏广告示例插屏广告是移动广告的一种常见形式,在应用流程中弹出,当应用展示插屏广告时,用户可以选择点击广告,也可以将其关闭并返回应用。
# 6.6.1 插屏广告主要 APIInterstitialAd
com.tianmu.ad.InterstitialAd
方法名介绍InterstitialAd(Context context)构造方法。参数说明:context(加载广告的上下文对象)。setMute(boolean isMute)视频静音设置。参数说明:isMute(true:静音、false:不静音,默认:true)。setListener(InterstitialAdListener listener)设置广告相关状态。参数说明:listener(广告状态监听器)。loadAd(String posId)请求广告。参数说明:posId(广告位ID)。setSensorDisable(boolean isSensorDisable)是否禁用传感器。参数说明:isSensorDisable(true:禁用,false:启用,默认false)。setShowDirection(int showDirection)展示方向。参数说明:showDirection(TianmuConfig.ScreenOrientation.PORTRAIT:竖屏展示,TianmuConfig.ScreenOrientation.LANDSCAPE:横屏展示,默认竖屏展示)。setAutoClose(boolean autoClose)自动关闭插屏,默认5秒倒计时。参数说明:autoClose(true:启用、false:禁用,默认:false)。setAutoClose(boolean autoClose, int second)自动关闭插屏。参数说明:autoClose(true:启用、false:禁用,默认:false)、second(自动关闭时长,范围[3, 100]秒)。release()释放广告。InterstitialAdListener
com.tianmu.ad.listener.InterstitialAdListener
方法名介绍onAdReceive(InterstitialAdInfo adInfo)广告加载成功回调。onAdExpose(InterstitialAdInfo adInfo)广告展示回调。onAdClick(InterstitialAdInfo adInfo)广告点击回调。onAdClose(InterstitialAdInfo adInfo)广告关闭回调。onVideoStart(InterstitialAdInfo adInfo)视频播放开始回调。onVideoFinish(InterstitialAdInfo adInfo)视频播放完成回调。onVideoPause(InterstitialAdInfo adInfo)视频暂停回调。onVideoError(InterstitialAdInfo adInfo)视频播放异常。onAdFailed(TianmuError error)广告失败回调。参数说明:error(广告错误信息)。InterstitialAdInfo
com.tianmu.ad.bean.InterstitialAdInfo
方法名介绍sendLossNotice(int price, @BidLossNotice int reason)竞败上报。参数说明:price(回传竞赢价格(ecpm),单位:分)、reason(竞败原因)。getBidPrice()获取竞价价格(ecpm),单位:分。getBidFloor()获取底价(ecpm),单位:分。isOvertime()广告是否超时(广告需要在10分钟内展示)。showInterstitial(Activity activity)展示广告。参数说明:activity(需要展示插屏的页面)。# 6.6.2 插屏广告接入示例InterstitialAd interstitialAd = new InterstitialAd(this);
interstitialAd.setListener(new InterstitialAdListener() {
@Override
public void onAdReceive(InterstitialAdInfo interstitialAdInfo) {
// 广告获取成功回调
if (interstitialAdInfo != null) {
interstitialAdInfo.showInterstitial(Activity activity);
}
}
@Override
public void onAdExpose(InterstitialAdInfo interstitialAdInfo) {
// 广告展示回调
}
@Override
public void onAdClick(InterstitialAdInfo interstitialAdInfo) {
// 广告点击回调
}
@Override
public void onAdClose(InterstitialAdInfo interstitialAdInfo) {
// 广告关闭回调
}
@Override
public void onVideoStart(InterstitialAdInfo interstitialAdInfo) {
// 视频开始播放
}
@Override
public void onVideoFinish(InterstitialAdInfo interstitialAdInfo) {
// 视频播放完毕
}
@Override
public void onVideoPause(InterstitialAdInfo interstitialAdInfo) {
// 视频暂停
}
@Override
public void onVideoError(InterstitialAdInfo interstitialAdInfo) {
// 视频错误
}
@Override
public void onAdFailed(TianmuError error) {
// 广告失败回调
}
});
interstitialAd.loadAd(String posId);
插屏广告示例详情在新窗口打开
# 6.7 激励视频广告示例将短视频融入到APP场景当中,用户观看短视频广告后可以给予一些应用内奖励。
# 6.7.1 激励视频广告主要 APIRewardAd
com.tianmu.ad.RewardAd
方法名介绍RewardAd(Context context)构造方法。参数说明:context(加载广告的上下文对象)。setMute(boolean isMute)视频静音设置。参数说明:isMute(true:静音、false:不静音,默认:true)。setSensorDisable(boolean isSensorDisable)是否禁用传感器。参数说明:isSensorDisable(true:禁用,false:启用,默认false)。setShowDirection(int showDirection)展示方向。参数说明:showDirection(TianmuConfig.ScreenOrientation.PORTRAIT:竖屏展示,TianmuConfig.ScreenOrientation.LANDSCAPE:横屏展示,默认竖屏展示)。setListener(RewardAdListener listener)设置广告相关状态。参数说明:listener(广告状态监听器)。loadAd(String posId)请求广告。参数说明:posId(广告位ID)。release()释放广告。RewardAdListener
com.tianmu.ad.listener.RewardAdListener
方法名介绍onAdReceive(RewardAdInfo adInfo)广告加载成功回调。onAdExpose(RewardAdInfo adInfo)广告展示回调。onAdClick(RewardAdInfo adInfo)广告点击回调。onAdClose(RewardAdInfo adInfo)广告关闭回调。onAdReward(RewardAdInfo adInfo)广告奖励回调。onVideoStart(RewardAdInfo adInfo)视频播放开始回调。onVideoFinish(RewardAdInfo adInfo)视频播放完成回调。onVideoPause(RewardAdInfo adInfo)视频暂停回调。onVideoError(RewardAdInfo adInfo)视频播放异常。onAdFailed(TianmuError error)广告失败回调。参数说明:error(广告错误信息)。InterstitialAdInfo
com.tianmu.ad.bean.RewardAdInfo
方法名介绍sendLossNotice(int price, @BidLossNotice int reason)竞败上报。参数说明:price(回传竞赢价格(ecpm),单位:分)、reason(竞败原因)。getBidPrice()获取竞价价格(ecpm),单位:分。getBidFloor()获取底价(ecpm),单位:分。isOvertime()广告是否超时(广告需要在10分钟内展示)。showRewardAd(Activity activity)展示广告。参数说明:activity(需要展示激励视频的页面)。# 6.7.2 激励视频广告接入示例RewardAd rewardAd = new RewardAd(this);
rewardAd.setListener(new RewardAdListener() {
@Override
public void onAdReceive(RewardAdInfo rewardAdInfo) {
// 广告获取成功回调
if (rewardAdInfo != null) {
rewardAdInfo.showRewardAd(Activity activity);
}
}
@Override
public void onAdReward(RewardAdInfo rewardAdInfo) {
// 广告奖励回调
}
@Override
public void onAdExpose(RewardAdInfo rewardAdInfo) {
// 广告展示回调
}
@Override
public void onAdClick(RewardAdInfo rewardAdInfo) {
// 广告点击回调
}
@Override
public void onAdClose(RewardAdInfo rewardAdInfo) {
// 广告关闭回调
}
@Override
public void onVideoCompleted(RewardAdInfo rewardAdInfo) {
// 视频播放完毕回调
}
@Override
public void onVideoSkip(RewardAdInfo rewardAdInfo) {
// 视频跳过回调
}
@Override
public void onVideoError(RewardAdInfo rewardAdInfo, String msg) {
// 视频播放错误回调
}
@Override
public void onAdFailed(TianmuError error) {
// 广告失败回调
}
});
rewardAd.loadAd(String posId);
激励视频广告示例详情在新窗口打开
# 6.8 备注具体的接入代码和流程,请参考Demo
# 7. 常见问题和错误调试常见问题和错误调试及错误码在新窗口打开
# 8.商务合作邮箱 : yuxingcao@admobile.top