一、抖音广告接入(Android接入)
注意:内容输出对接中已包含广告对接,建议使用广告4.6.0.7版本,如使用其他广告版本建议做好自测
-
- //2600及以上版本,需要使用如下Maven命令
- //火山引擎maven仓库地址
- maven{url 'https://artifact.bytedance.com/repository/Volcengine/'}
- //穿山甲maven仓库地址
- maven{url 'https://artifact.bytedance.com/repository/pangle'}
- //为保证兼容性 建议使用广告SDK版本
- implementation 'com.pangle.cn:ads-sdk-pro:4.6.0.7'
- implementation ('com.pangle.cn:pangrowth-sdk:2.9.0.4'){
- exclude group: 'com.pangle.cn', module: 'partner-live-sdk'
- exclude group: 'com.pangle.cn', module: 'pangrowth-novel-sdk'
- exclude group: 'com.pangle.cn', module: 'pangrowth-game-sdk'
- exclude group: 'com.pangle.cn', module: 'pangrowth-luckycat-sdk'
- exclude group: 'com.pangle.cn', module: 'pangrowth-reward-sdk'
- exclude group: 'com.pangle.cn', module: 'partner-luckycat-api-sdk'
- exclude group: 'com.pangle.cn', module: 'pangrowth-luckycat-api'
- }
二、抖音广告接入(IOS接入)
(一)静态短视频
-
- source 'https://github.com/CocoaPods/Specs.git'
- source 'https://github.com/volcengine/volcengine-specs.git'
- pod 'Ads-CN', '4.6.0.0' #为保证兼容性 建议使用广告SDK版本
- pod 'Pangrowth', '3.0.0.0', :subspecs => [ 'media' ]
(二)动态短视频
-
- source 'https://github.com/CocoaPods/Specs.git'
- source 'https://github.com/volcengine/volcengine-specs.git'
- pod 'Ads-CN', '4.6.0.0' #为保证兼容性 建议使用广告SDK版本
- pod 'Pangrowth', '3.0.0.0', :subspecs => [ 'media-dynamic' ]
三、抖音开屏广告****接入新规-2022年11月
为提高开发者的收入体验,新版开屏广告降低开发者的接入成本,烦请开发者详读本文档,以避免出现接入错误。
旧接口废弃&新增 (直接从4700版本开始接入的新用户无需看此部分,可以直接从老版本升级上来的需要阅读此部分区分新老接口区别)
开屏请求、回调接口变更
目前4700Android 在创建TTAdNative对象以及创建广告请求AdSlot阶段和之前保持一致,在调用loadSplashAd接口时新增了新的加载开屏接口,新老接口对比以及示例:
1.接口规范
- /**
- * @param adSlot 请求配置信息
- * @param listener 加载结果回调
- * @param timeOut 加载超时时间
- * 异步加载Splash广告,结果会通过CSJSplashAdListener回调
- */
- void loadSplashAd(AdSlot adSlot, CSJSplashAdListener listener, int timeOut);
-
- /**
- * 开屏广告加载监听器
- */
- interface CSJSplashAdListener{
- //广告物料、素材加载成功回调
- void onSplashLoadSuccess();
-
- //广告物料或素材加载失败或超时回调
- void onSplashLoadFail(CSJAdError csjAdError);
-
- /**
- * 广告渲染回调,接入方可以在这个回调中,调用ad.showSplashView(splashContainerView)进行渲染
- * @param ad 开屏广告接口
- */
- void onSplashRenderSuccess(CSJSplashAd ad);
-
- //广告渲染失败或超时回调
- void onSplashRenderFail(CSJSplashAd ad, CSJAdError csjAdError);
- }
2.代码示例
2.1代码实现
- mTTAdNative.loadSplashAd(adSlot, new TTAdNative.CSJSplashAdListener() {
-
- @Override
- public void onSplashLoadSuccess() {
-
- }
-
- @Override
- public void onSplashLoadFail(CSJAdError error) {
- showToast(error.getMsg());
- goToMainActivity();
- }
-
- @Override
- public void onSplashRenderSuccess(CSJSplashAd ad) {
- if (ad == null) {
- return;
- }
- mSplashAd = ad;
- mSplashAd.showSplashView(mSplashContainer);
- }
-
- @Override
- public void onSplashRenderFail(CSJSplashAd ad, CSJAdError csjAdError) {
- showToast(csjAdError.getMsg());
- goToMainActivity();
- }
- }, AD_TIME_OUT);
2.2接口回调代码示例
- package com.bytedance.sdk.openadsdk;
-
- import android.app.Activity;
- import android.view.View;
- import android.view.ViewGroup;
- import java.util.Map;
-
- public interface CSJSplashAd extends TTClientBidding {
- /**
- * 获取开屏广告
- *
- * @return
- */
-
- View getSplashView();
-
- /**
- * 获取点睛view
- * @return
- */
-
- View getSplashClickEyeView();
-
- /**
- * 获取卡片view
- *
- * @return
- */
-
- View getSplashCardView();
-
- /**
- * 得到Splash广告的交互类型
- *
- * @return 2在浏览器内打开 (普通类型)3落地页(普通类型),5:拨打电话 -1 未知类型
- */
- int getInteractionType();
-
- /**
- * 设置开屏广告不开启倒计时功能、不显示跳过按钮
- */
- void hideSkipButton();
-
- /**
- * 返回广告额外信息
- */
- Map<String, Object> getMediaExtraInfo();
-
- interface SplashAdListener {
-
- //开屏展示
- void onSplashAdShow(CSJSplashAd ad);
-
- //开屏点击
- void onSplashAdClick(CSJSplashAd ad);
-
- //开屏关闭
- void onSplashAdClose(CSJSplashAd ad, int closeType);
- }
-
- /**
- * 注册Splash广告的下载回调
- *
- * @param downloadListener 下载回调监听器
- */
- void setDownloadListener(TTAppDownloadListener downloadListener);
-
- /**
- * 注册开屏阶段回调
- *
- * @param splashAdListener
- */
- void setSplashAdListener(SplashAdListener splashAdListener);
-
- int[] getSplashClickEyeSizeToDp();
-
- /**
- * 通知sdk开始点睛动画
- */
- void startClickEye();
-
- interface SplashClickEyeListener {
- //通知媒体可以展示点睛
- void onSplashClickEyeReadyToShow(CSJSplashAd bean);
-
- //媒体点睛点击回调
- void onSplashClickEyeClick();
-
- //点睛关闭回调
- void onSplashClickEyeClose();
- }
-
- interface SplashCardListener {
- //通知媒体可以展示卡片
- void onSplashCardReadyToShow(CSJSplashAd bean);
-
- //媒体卡片点击回调
- void onSplashCardClick();
-
- //卡片关闭回调
- void onSplashCardClose();
- }
-
- /**
- * 注册点睛阶段回调
- * @param clickEyeListener
- */
- void setSplashClickEyeListener(SplashClickEyeListener clickEyeListener);
-
-
- /**
- * 注册卡片阶段回调
- *
- * @param cardListener
- */
- void setSplashCardListener(SplashCardListener cardListener);
-
- /**
- * 告知sdk展示开屏
- * @param viewGroup
- */
- void showSplashView(ViewGroup viewGroup);
-
- /**
- * 告知sdk展示点睛
- * @param viewGroup
- */
- void showSplashClickEyeView(ViewGroup viewGroup);
-
- /**
- * 告知sdk展示卡片
- * @param viewGroup
- */
- void showSplashCardView(ViewGroup viewGroup, Activity activity);
-
- }
2.3交互接口新
- interface SplashAdListener {
-
- //开屏展示
- void onSplashAdShow(CSJSplashAd ad);
-
- //开屏点击
- void onSplashAdClick(CSJSplashAd ad);
-
- //开屏关闭(开屏跳过以及倒计时结束统一收敛到该接口)
- void onSplashAdClose(CSJSplashAd ad, int closeType);
- }
2.4点晴新接口
- interface SplashClickEyeListener
- {
- //通知媒体可以展示点睛
- void onSplashClickEyeReadyToShow(CSJSplashAd bean);
- //媒体点睛点击回调 void onSplashClickEyeClick();
- //点睛关闭回调
- void onSplashClickEyeClose();
- }
2.5卡片新接口
- interface SplashCardListener {
- //通知媒体可以展示卡片
- void onSplashCardReadyToShow(CSJSplashAd bean);
-
- //媒体卡片点击回调
- void onSplashCardClick();
-
- //卡片关闭回调
- void onSplashCardClose();
- }
2.6开屏广告接入接口说明
开屏广告: 开屏广告为用户在进入App时展示的全屏广告。开屏广告为一个View,宽高默认为match_parent。注意: 开屏广告view:width =屏幕宽;height需要>=75%屏幕高 ,否则会影响计费。支持的广告尺寸:开屏广告的尺寸为开发者请求广告时设置的尺寸,建议设置的请求尺寸传入与展示区域大小保持一致,避免素材变形。
- public interface CSJSplashAd extends TTClientBidding {
- /**
- * 获取开屏广告
- *
- * @return
- */
- View getSplashView();
-
- /**
- * 获取点睛view
- * @return
- */
- View getSplashClickEyeView();
-
- /**
- * 获取卡片view
- *
- * @return
- */
- View getSplashCardView();
-
- /**
- * 得到Splash广告的交互类型
- *
- * @return 2在浏览器内打开 (普通类型)3落地页(普通类型),5:拨打电话 -1 未知类型
- */
- int getInteractionType();
-
- /**
- * 设置开屏广告不开启倒计时功能、不显示跳过按钮
- */
- void hideSkipButton();
-
- /**
- * 返回广告额外信息
- */
- Map<String, Object> getMediaExtraInfo();
-
- interface SplashAdListener {
-
- //开屏展示
- void onSplashAdShow(CSJSplashAd ad);
-
- //开屏点击
- void onSplashAdClick(CSJSplashAd ad);
-
- //开屏关闭
- void onSplashAdClose(CSJSplashAd ad, int closeType);
- }
-
- /**
- * 注册Splash广告的下载回调
- *
- * @param downloadListener 下载回调监听器
- */
- void setDownloadListener(TTAppDownloadListener downloadListener);
-
- /**
- * 注册开屏阶段回调
- *
- * @param splashAdListener
- */
- void setSplashAdListener(SplashAdListener splashAdListener);
-
- int[] getSplashClickEyeSizeToDp();
-
- /**
- * 通知sdk开始点睛动画
- */
- void startClickEye();
-
- interface SplashClickEyeListener {
- //通知媒体可以展示点睛
- void onSplashClickEyeReadyToShow(CSJSplashAd bean);
-
- //媒体点睛点击回调
- void onSplashClickEyeClick();
-
- //点睛关闭回调
- void onSplashClickEyeClose();
- }
-
- interface SplashCardListener {
- //通知媒体可以展示卡片
- void onSplashCardReadyToShow(CSJSplashAd bean);
-
- //媒体卡片点击回调
- void onSplashCardClick();
-
- //卡片关闭回调
- void onSplashCardClose();
- }
-
- /**
- * 注册点睛阶段回调
- * @param clickEyeListener
- */
- void setSplashClickEyeListener(SplashClickEyeListener clickEyeListener);
-
-
- /**
- * 注册卡片阶段回调
- *
- * @param cardListener
- */
- void setSplashCardListener(SplashCardListener cardListener);
-
- /**
- * 告知sdk展示开屏
- * @param viewGroup
- */
- void showSplashView(ViewGroup viewGroup);
-
- /**
- * 告知sdk展示点睛
- * @param viewGroup
- */
- void showSplashClickEyeView(ViewGroup viewGroup);
-
- /**
- * 告知sdk展示卡片
- * @param viewGroup
- */
- void showSplashCardView(ViewGroup viewGroup, Activity activity);
-
- }
2.7开屏广告请求广告接口说明
- mTTAdNative.loadSplashAd(adSlot, new TTAdNative.CSJSplashAdListener() {
-
- //开屏素材加载成功
- @Override
- public void onSplashLoadSuccess() {
-
- }
-
- //加载开屏素材失败
- @Override
- public void onSplashLoadFail(CSJAdError error) {
- //开发者处理跳转到APP主页面逻辑
- }
-
- //开屏渲染成功,可以展示开屏
- @Override
- public void onSplashRenderSuccess(CSJSplashAd ad) {
-
- if (ad == null) {
- return;
- }
- if (mSplashContainer != null && !SplashActivity.this.isFinishing()) {
- mSplashContainer.removeAllViews();
- //把SplashView 添加到ViewGroup中,注意开屏广告view:width =屏幕宽;height >=75%屏幕高
- ad.showSplashView(mSplashContainer);
- //设置不开启开屏广告倒计时功能以及不显示跳过按钮,如果这么设置,您需要自定义倒计时逻辑
- //ad.setNotAllowSdkCountdown();
- }else {
- //开发者处理跳转到APP主页面逻辑
- }
- if (ad == null) {
- return;
- }
-
- }
-
- @Override
- public void onSplashRenderFail(CSJSplashAd ad, CSJAdError csjAdError) {
- //开发者处理跳转到APP主页面逻辑
- }
- }, AD_TIME_OUT);
2.8广告交互监听器
- interface SplashAdListener {
-
- //开屏展示
- void onSplashAdShow(CSJSplashAd ad);
-
- //开屏点击
- void onSplashAdClick(CSJSplashAd ad);
-
- //开屏关闭
- void onSplashAdClose(CSJSplashAd ad, int closeType);
- }
2.9移除广告
可在Activity跳转到其他Activity时把广告控件上的广告视图remove掉
mSplashContainer.removeAllViews();
3.0开屏广告衔接注意
1、模板渲染的开屏请求方法需设置setExpressViewAcceptedSize参数 单位dp。非模板渲染开屏请求方法需设置setImageAcceptedSize参数 单位px 。切记不可使用错误
2、开屏广告加载超时时间建议大于3500ms,最大程度的保证广告的展示率可开屏体验,示例设置了3500ms
3、为了收益最大化所有开屏广告均要实时请求,不可缓存。
4、开发者要在onSplashLoadFail()、onSplashRenderFail()、onSplashAdClose()回调及CSJSplashAd广告为null时开发者做跳转主页面的处理,跳转之后开屏控件上的view移除。
5、需要开发者在开屏Activity中onStop()中做一个标记 在onResume()中做跳转主页面的逻辑处理,跳转之后开屏控件上的view移除。
- @Override
- protected void onResume() {
- //判断是否该跳转到主页面
- if (mForceGoMain) {
- goToMainActivity();
- }
- super.onResume();
- }
-
- @Override
- protected void onStop() {
- super.onStop();
- mForceGoMain = true;
- }
6、如果要在底部添加自身logo,需要缩小的开屏广告的展示区域,此时请求的时候宽和高填写裁剪后宽和高即可,即请求尺寸为屏幕宽*(屏幕高-logo高)
新版开屏广告使用BUSplashAd对象管理开屏广告所有业务。开屏广告所有视图的展示和移除将由SDK统一管理,开发者无需关心。 接入方式上,使用BUSplashAd对象调用loadAdData方法请求广告,调用show方法展示广告,通过设置BUSplashAdDelegate代理,获取广告加载、 渲染、点击、关闭、跳转等回调。
1.服务范围
创建广告位对象、请求广告、展示广告
2.传入广告位ID
- _splashAd = [[BUSplashAd alloc] initWithSlotID:slotID adSize:size];
- // 设置开屏广告代理
- _splashAd.delegate = self;
- // 加载广告
- [_splashAd loadAdData];
3.广告物料、素材加载成功后,会回调splashAdLoadSuccess:方法,在这里调用show方法展示广告:
- - (void)splashAdLoadSuccess:(BUSplashAd *)splashAd {
- // 使用应用keyWindow的rootViewController(接入简单,推荐)
- UIWindow *keyWindow = [[[UIApplication sharedApplication] delegate] window];
- [splashAd showSplashViewInRootViewController:keyWindow.rootViewController];
- }