irpas技术客

抖音广告IOS/Android接入笔记:_百城软件_ios 个人开发者接入广告

irpas 7916

一、抖音广告接入(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]; }


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #iOS #个人开发者接入广告