• 抖音广告IOS/Android接入笔记:


    一、抖音广告接入(Android接入)

    注意:内容输出对接中已包含广告对接,建议使用广告4.6.0.7版本,如使用其他广告版本建议做好自测

    1. //2600及以上版本,需要使用如下Maven命令
    2. //火山引擎maven仓库地址
    3. maven{url 'https://artifact.bytedance.com/repository/Volcengine/'}
    4. //穿山甲maven仓库地址
    5. maven{url 'https://artifact.bytedance.com/repository/pangle'}
    6. //为保证兼容性 建议使用广告SDK版本
    7. implementation 'com.pangle.cn:ads-sdk-pro:4.6.0.7'
    8. implementation ('com.pangle.cn:pangrowth-sdk:2.9.0.4'){
    9. exclude group: 'com.pangle.cn', module: 'partner-live-sdk'
    10. exclude group: 'com.pangle.cn', module: 'pangrowth-novel-sdk'
    11. exclude group: 'com.pangle.cn', module: 'pangrowth-game-sdk'
    12. exclude group: 'com.pangle.cn', module: 'pangrowth-luckycat-sdk'
    13. exclude group: 'com.pangle.cn', module: 'pangrowth-reward-sdk'
    14. exclude group: 'com.pangle.cn', module: 'partner-luckycat-api-sdk'
    15. exclude group: 'com.pangle.cn', module: 'pangrowth-luckycat-api'
    16. }

    二、抖音广告接入(IOS接入)

    (一)静态短视频

    1. source 'https://github.com/CocoaPods/Specs.git'
    2. source 'https://github.com/volcengine/volcengine-specs.git'
    3. pod 'Ads-CN', '4.6.0.0' #为保证兼容性 建议使用广告SDK版本
    4. pod 'Pangrowth', '3.0.0.0', :subspecs => [ 'media' ]

    (二)动态短视频

    1. source 'https://github.com/CocoaPods/Specs.git'
    2. source 'https://github.com/volcengine/volcengine-specs.git'
    3. pod 'Ads-CN', '4.6.0.0' #为保证兼容性 建议使用广告SDK版本
    4. pod 'Pangrowth', '3.0.0.0', :subspecs => [ 'media-dynamic' ]

    三、抖音开屏广告****接入新规-2022年11月

    (一)Android开屏广告接入

    新版开屏广告说明

    为提高开发者的收入体验,新版开屏广告降低开发者的接入成本,烦请开发者详读本文档,以避免出现接入错误。

    重大变化

    旧接口废弃&新增 (直接从4700版本开始接入的新用户无需看此部分,可以直接从老版本升级上来的需要阅读此部分区分新老接口区别)

    开屏请求、回调接口变更

    目前4700Android 在创建TTAdNative对象以及创建广告请求AdSlot阶段和之前保持一致,在调用loadSplashAd接口时新增了新的加载开屏接口,新老接口对比以及示例:

    1.接口规范

    1. /**
    2. * @param adSlot 请求配置信息
    3. * @param listener 加载结果回调
    4. * @param timeOut 加载超时时间
    5. * 异步加载Splash广告,结果会通过CSJSplashAdListener回调
    6. */
    7. void loadSplashAd(AdSlot adSlot, CSJSplashAdListener listener, int timeOut);
    8. /**
    9. * 开屏广告加载监听器
    10. */
    11. interface CSJSplashAdListener{
    12. //广告物料、素材加载成功回调
    13. void onSplashLoadSuccess();
    14. //广告物料或素材加载失败或超时回调
    15. void onSplashLoadFail(CSJAdError csjAdError);
    16. /**
    17. * 广告渲染回调,接入方可以在这个回调中,调用ad.showSplashView(splashContainerView)进行渲染
    18. * @param ad 开屏广告接口
    19. */
    20. void onSplashRenderSuccess(CSJSplashAd ad);
    21. //广告渲染失败或超时回调
    22. void onSplashRenderFail(CSJSplashAd ad, CSJAdError csjAdError);
    23. }

    2.代码示例

    2.1代码实现

    1. mTTAdNative.loadSplashAd(adSlot, new TTAdNative.CSJSplashAdListener() {
    2. @Override
    3. public void onSplashLoadSuccess() {
    4. }
    5. @Override
    6. public void onSplashLoadFail(CSJAdError error) {
    7. showToast(error.getMsg());
    8. goToMainActivity();
    9. }
    10. @Override
    11. public void onSplashRenderSuccess(CSJSplashAd ad) {
    12. if (ad == null) {
    13. return;
    14. }
    15. mSplashAd = ad;
    16. mSplashAd.showSplashView(mSplashContainer);
    17. }
    18. @Override
    19. public void onSplashRenderFail(CSJSplashAd ad, CSJAdError csjAdError) {
    20. showToast(csjAdError.getMsg());
    21. goToMainActivity();
    22. }
    23. }, AD_TIME_OUT);

    2.2接口回调代码示例

    1. package com.bytedance.sdk.openadsdk;
    2. import android.app.Activity;
    3. import android.view.View;
    4. import android.view.ViewGroup;
    5. import java.util.Map;
    6. public interface CSJSplashAd extends TTClientBidding {
    7.     /**
    8.      * 获取开屏广告
    9.      *
    10.      * @return
    11.      */
    12.     View getSplashView();
    13.     /**
    14.      * 获取点睛view
    15.      * @return
    16.      */
    17.     View getSplashClickEyeView();
    18.     /**
    19.      * 获取卡片view
    20.      *
    21.      * @return
    22.      */
    23.     View getSplashCardView();
    24.     /**
    25.      * 得到Splash广告的交互类型
    26.      *
    27.      * @return 2在浏览器内打开 (普通类型)3落地页(普通类型),5:拨打电话 -1 未知类型
    28.      */
    29.     int getInteractionType();
    30.     /**
    31.      * 设置开屏广告不开启倒计时功能、不显示跳过按钮
    32.      */
    33.     void hideSkipButton();
    34.     /**
    35.      * 返回广告额外信息
    36.      */
    37.     Map<String, Object> getMediaExtraInfo();
    38.     interface SplashAdListener {
    39.         //开屏展示
    40.         void onSplashAdShow(CSJSplashAd ad);
    41.         //开屏点击
    42.         void onSplashAdClick(CSJSplashAd ad);
    43.         //开屏关闭
    44.         void onSplashAdClose(CSJSplashAd ad, int closeType);
    45.     }
    46.     /**
    47.      * 注册Splash广告的下载回调
    48.      *
    49.      * @param downloadListener 下载回调监听器
    50.      */
    51.     void setDownloadListener(TTAppDownloadListener downloadListener);
    52.     /**
    53.      * 注册开屏阶段回调
    54.      *
    55.      * @param splashAdListener
    56.      */
    57.     void setSplashAdListener(SplashAdListener splashAdListener);
    58.     int[] getSplashClickEyeSizeToDp();
    59.     /**
    60.      * 通知sdk开始点睛动画
    61.      */
    62.     void startClickEye();
    63.     interface SplashClickEyeListener {
    64.         //通知媒体可以展示点睛
    65.         void onSplashClickEyeReadyToShow(CSJSplashAd bean);
    66.         //媒体点睛点击回调
    67.         void onSplashClickEyeClick();
    68.         //点睛关闭回调
    69.         void onSplashClickEyeClose();
    70.     }
    71.     interface SplashCardListener {
    72.         //通知媒体可以展示卡片
    73.         void onSplashCardReadyToShow(CSJSplashAd bean);
    74.         //媒体卡片点击回调
    75.         void onSplashCardClick();
    76.         //卡片关闭回调
    77.         void onSplashCardClose();
    78.     }
    79.     /**
    80.      * 注册点睛阶段回调
    81.      * @param clickEyeListener
    82.      */
    83.     void setSplashClickEyeListener(SplashClickEyeListener clickEyeListener);
    84.     /**
    85.      * 注册卡片阶段回调
    86.      *
    87.      * @param cardListener
    88.      */
    89.     void setSplashCardListener(SplashCardListener cardListener);
    90.     /**
    91.      * 告知sdk展示开屏
    92.      * @param viewGroup
    93.      */
    94.     void showSplashView(ViewGroup viewGroup);
    95.     /**
    96.      * 告知sdk展示点睛
    97.      * @param viewGroup
    98.      */
    99.     void showSplashClickEyeView(ViewGroup viewGroup);
    100.     /**
    101.      * 告知sdk展示卡片
    102.      * @param viewGroup
    103.      */
    104.     void showSplashCardView(ViewGroup viewGroup, Activity activity);
    105. }

    2.3交互接口新

    1. interface SplashAdListener {
    2.     //开屏展示
    3.     void onSplashAdShow(CSJSplashAd ad);
    4.     //开屏点击
    5.     void onSplashAdClick(CSJSplashAd ad);
    6.     //开屏关闭(开屏跳过以及倒计时结束统一收敛到该接口)
    7.     void onSplashAdClose(CSJSplashAd ad, int closeType);
    8. }

    2.4点晴新接口

    1. interface SplashClickEyeListener
    2. {
    3. //通知媒体可以展示点睛
    4. void onSplashClickEyeReadyToShow(CSJSplashAd bean);
    5. //媒体点睛点击回调 void onSplashClickEyeClick();
    6. //点睛关闭回调
    7. void onSplashClickEyeClose();
    8. }

    2.5卡片新接口

    1. interface SplashCardListener {
    2. //通知媒体可以展示卡片
    3. void onSplashCardReadyToShow(CSJSplashAd bean);
    4. //媒体卡片点击回调
    5. void onSplashCardClick();
    6. //卡片关闭回调
    7. void onSplashCardClose();
    8. }

    2.6开屏广告接入接口说明

    开屏广告: 开屏广告为用户在进入App时展示的全屏广告。开屏广告为一个View,宽高默认为match_parent。注意: 开屏广告view:width =屏幕宽;height需要>=75%屏幕高 ,否则会影响计费。支持的广告尺寸:开屏广告的尺寸为开发者请求广告时设置的尺寸,建议设置的请求尺寸传入与展示区域大小保持一致,避免素材变形。

    1. public interface CSJSplashAd extends TTClientBidding {
    2. /**
    3. * 获取开屏广告
    4. *
    5. * @return
    6. */
    7. View getSplashView();
    8. /**
    9. * 获取点睛view
    10. * @return
    11. */
    12. View getSplashClickEyeView();
    13. /**
    14. * 获取卡片view
    15. *
    16. * @return
    17. */
    18. View getSplashCardView();
    19. /**
    20. * 得到Splash广告的交互类型
    21. *
    22. * @return 2在浏览器内打开 (普通类型)3落地页(普通类型),5:拨打电话 -1 未知类型
    23. */
    24. int getInteractionType();
    25. /**
    26. * 设置开屏广告不开启倒计时功能、不显示跳过按钮
    27. */
    28. void hideSkipButton();
    29. /**
    30. * 返回广告额外信息
    31. */
    32. Map<String, Object> getMediaExtraInfo();
    33. interface SplashAdListener {
    34. //开屏展示
    35. void onSplashAdShow(CSJSplashAd ad);
    36. //开屏点击
    37. void onSplashAdClick(CSJSplashAd ad);
    38. //开屏关闭
    39. void onSplashAdClose(CSJSplashAd ad, int closeType);
    40. }
    41. /**
    42. * 注册Splash广告的下载回调
    43. *
    44. * @param downloadListener 下载回调监听器
    45. */
    46. void setDownloadListener(TTAppDownloadListener downloadListener);
    47. /**
    48. * 注册开屏阶段回调
    49. *
    50. * @param splashAdListener
    51. */
    52. void setSplashAdListener(SplashAdListener splashAdListener);
    53. int[] getSplashClickEyeSizeToDp();
    54. /**
    55. * 通知sdk开始点睛动画
    56. */
    57. void startClickEye();
    58. interface SplashClickEyeListener {
    59. //通知媒体可以展示点睛
    60. void onSplashClickEyeReadyToShow(CSJSplashAd bean);
    61. //媒体点睛点击回调
    62. void onSplashClickEyeClick();
    63. //点睛关闭回调
    64. void onSplashClickEyeClose();
    65. }
    66. interface SplashCardListener {
    67. //通知媒体可以展示卡片
    68. void onSplashCardReadyToShow(CSJSplashAd bean);
    69. //媒体卡片点击回调
    70. void onSplashCardClick();
    71. //卡片关闭回调
    72. void onSplashCardClose();
    73. }
    74. /**
    75. * 注册点睛阶段回调
    76. * @param clickEyeListener
    77. */
    78. void setSplashClickEyeListener(SplashClickEyeListener clickEyeListener);
    79. /**
    80. * 注册卡片阶段回调
    81. *
    82. * @param cardListener
    83. */
    84. void setSplashCardListener(SplashCardListener cardListener);
    85. /**
    86. * 告知sdk展示开屏
    87. * @param viewGroup
    88. */
    89. void showSplashView(ViewGroup viewGroup);
    90. /**
    91. * 告知sdk展示点睛
    92. * @param viewGroup
    93. */
    94. void showSplashClickEyeView(ViewGroup viewGroup);
    95. /**
    96. * 告知sdk展示卡片
    97. * @param viewGroup
    98. */
    99. void showSplashCardView(ViewGroup viewGroup, Activity activity);
    100. }

    2.7开屏广告请求广告接口说明

    1. mTTAdNative.loadSplashAd(adSlot, new TTAdNative.CSJSplashAdListener() {
    2. //开屏素材加载成功
    3. @Override
    4. public void onSplashLoadSuccess() {
    5. }
    6. //加载开屏素材失败
    7. @Override
    8. public void onSplashLoadFail(CSJAdError error) {
    9. //开发者处理跳转到APP主页面逻辑
    10. }
    11. //开屏渲染成功,可以展示开屏
    12. @Override
    13. public void onSplashRenderSuccess(CSJSplashAd ad) {
    14. if (ad == null) {
    15. return;
    16. }
    17. if (mSplashContainer != null && !SplashActivity.this.isFinishing()) {
    18. mSplashContainer.removeAllViews();
    19. //把SplashView 添加到ViewGroup中,注意开屏广告view:width =屏幕宽;height >=75%屏幕高
    20. ad.showSplashView(mSplashContainer);
    21. //设置不开启开屏广告倒计时功能以及不显示跳过按钮,如果这么设置,您需要自定义倒计时逻辑
    22. //ad.setNotAllowSdkCountdown();
    23. }else {
    24. //开发者处理跳转到APP主页面逻辑
    25. }
    26. if (ad == null) {
    27. return;
    28. }
    29. }
    30. @Override
    31. public void onSplashRenderFail(CSJSplashAd ad, CSJAdError csjAdError) {
    32. //开发者处理跳转到APP主页面逻辑
    33. }
    34. }, AD_TIME_OUT);

    2.8广告交互监听器

    1. interface SplashAdListener {
    2. //开屏展示
    3. void onSplashAdShow(CSJSplashAd ad);
    4. //开屏点击
    5. void onSplashAdClick(CSJSplashAd ad);
    6. //开屏关闭
    7. void onSplashAdClose(CSJSplashAd ad, int closeType);
    8. }

    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移除。

    1. @Override
    2. protected void onResume() {
    3. //判断是否该跳转到主页面
    4. if (mForceGoMain) {
    5. goToMainActivity();
    6. }
    7. super.onResume();
    8. }
    9. @Override
    10. protected void onStop() {
    11. super.onStop();
    12. mForceGoMain = true;
    13. }

    6、如果要在底部添加自身logo,需要缩小的开屏广告的展示区域,此时请求的时候宽和高填写裁剪后宽和高即可,即请求尺寸为屏幕宽*(屏幕高-logo高)

    (二)iOS新版开屏广告接入

    新版开屏广告使用BUSplashAd对象管理开屏广告所有业务。开屏广告所有视图的展示和移除将由SDK统一管理,开发者无需关心。 接入方式上,使用BUSplashAd对象调用loadAdData方法请求广告,调用show方法展示广告,通过设置BUSplashAdDelegate代理,获取广告加载、 渲染、点击、关闭、跳转等回调。

    1.服务范围

    创建广告位对象、请求广告、展示广告

    2.传入广告位ID

    1. _splashAd = [[BUSplashAd alloc] initWithSlotID:slotID adSize:size];
    2. // 设置开屏广告代理
    3. _splashAd.delegate = self;
    4. // 加载广告
    5. [_splashAd loadAdData];

    3.广告物料、素材加载成功后,会回调splashAdLoadSuccess:方法,在这里调用show方法展示广告:

    1. - (void)splashAdLoadSuccess:(BUSplashAd *)splashAd {
    2. // 使用应用keyWindow的rootViewController(接入简单,推荐)
    3. UIWindow *keyWindow = [[[UIApplication sharedApplication] delegate] window];
    4. [splashAd showSplashViewInRootViewController:keyWindow.rootViewController];
    5. }

  • 相关阅读:
    C:宏定义中使用do{...}while(0)
    恐怖片里,人工智能大开杀戒
    Js各种时间转换问题(YYYY-MM-DD 时间戳 中国标准时间)
    MySQL Binlog 简介
    【一键生成】3DMAX配景楼生成插件使用教程
    打印机不能正常打印怎么办
    vscode编辑器创建分支注意事项?!
    【计算机网络】介质访问控制
    ShardingSphere主从复制
    2022 年首届钉钉杯大学生大数据挑战赛初赛的Baseline
  • 原文地址:https://blog.csdn.net/baidu_31002735/article/details/127985473