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

一、抖音广告接入(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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值