一、抖音广告接入(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月
(一)Android开屏广告接入
新版开屏广告说明
为提高开发者的收入体验,新版开屏广告降低开发者的接入成本,烦请开发者详读本文档,以避免出现接入错误。
重大变化
旧接口废弃&新增 (直接从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高)
(二)iOS新版开屏广告接入
新版开屏广告使用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];
}