logo

帮助中心/文档详情/

Android自渲染插屏广告

简介

自渲染插屏: : 开发者可以拿到广告的物料信息进行拼接

支持的广告尺寸:

  • 大图(宽高比:1.78的图片)
  • 小图(宽高比:1.52的图片)
  • 组图(三张宽高比:1.52的图片)

权限

自渲染插屏广告: 已回收,不再提供创建

自渲染插屏请求方法

创建TTAdNative对象

//创建TTAdNative对象,createAdNative(Context context) context需要传入Activity对象
TTAdNative mTTAdNative = TTAdSdk.getAdManager().createAdNative(this);

创建广告请求类型参数AdSlot

注意:
1、setImageAcceptedSize 必填字段,期望的图片尺寸(必填)
2、setNativeAdType 请求原生广告时候,请务必调用该方法,请求自渲染插屏设置参数为TYPE_INTERACTION_AD

AdSlot adSlot = new AdSlot.Builder()
        .setCodeId(codeId)
        .setSupportDeepLink(true)
        .setImageAcceptedSize(1080, 1920)
        .setNativeAdType(AdSlot.TYPE_INTERACTION_AD)//请求原生广告时候,请务必调用该方法,设置参数为TYPE_INTERACTION_AD
        .build();

参数说明

参数 说明
setCodeId() 平台创建的代码位ID 以9开头9位数字
setImageAcceptedSize() 期望的图片尺寸(必填) 单位:px
setNativeAdType() 请求广告类型
setAdCount() 请求广告数量为1-3条

请求广告

接入方可调用loadNativeAd(AdSlot adSlot, @NonNull NativeAdListener listener)异步加载广告

//请求广告
mTTAdNative.loadNativeAd(adSlot, new TTAdNative.NativeAdListener() {

	//广告请求失败回调
    @Override
    public void onError(int code, String message) {
       
    }

	//广告请求成功的回调
    @Override
    public void onNativeAdLoad(List<TTNativeAd> ads) {
       
    }
});

NativeAdListener

回调 说明
onError() 广告请求失败回调 返回的错误码(code)表示广告请求失败的原因,详情请见链接
onNativeAdLoad() 广告请求成功的回调

注意:

  • addView前需要把控件上所有的view调用removeAllViews方法移除
  • setNativeAdType(AdSlot.TYPE_INTERACTION_AD) //请求原生广告时候,请务必调用该方法,设置参数为TYPE_INTERACTION_AD
  • 自渲染插屏是直接创建一个Dialog 在dialog中创建布局 把对应广告元素添加即可

TTFeedAd 接口说明

通过getAdView()获取广告信息,比如title、buttonText等信息,自定义绘制整个广告区域,可以和自己的应用的样式风格尽可能的接近

public interface TTFeedAd {

    /**
     * 获取穿山甲logo,图片大小:80*80
     *
     * @return bitmap对象
     */
    Bitmap getAdLogo();

    /**
     * 广告标题
     *
     * @return
     */
    String getTitle();

    /**
     * 广告描述
     *
     * @return
     */
    String getDescription();

    /**
     * 广告来源
     *
     * @return
     */
    String getSource();

    /**
     * 广告图标Image
     *
     * @return
     */
    TTImage getIcon();

    /**
     * 广告图片Image list
     *
     * @return
     */
    List<TTImage> getImageList();

    /**
     * 得到Feed广告交互类型
     *
     * @return 2:在浏览器打开网页,3:在app中打开,4:下载应用,5:拨打电话 其它:未知类型
     */
    int getInteractionType();


    /**
     * 得到Feed广告图片模式
     *
     * @return 3 大图 2小图 4 组图 5 视频 其它:未知类型
     */
    int getImageMode();

    /**
     * 获取下载状态控制器
     */
    DownloadStatusController getDownloadStatusController();

    /**
     * 注册可点击的View,click/show会在内部完成
     *
     * @param container 渲染广告最外层的ViewGroup
     * @param clickView 可点击的View
     */
    void registerViewForInteraction(@NonNull ViewGroup container, @NonNull View clickView, AdInteractionListener listener);

    /**
     * 注册可点击的View,click/show会在内部完成
     *
     * @param container     渲染广告最外层的ViewGroup
     * @param clickViews    可点击的View的列表
     * @param creativeViews 用于下载或者拨打电话的View
     */
    void registerViewForInteraction(@NonNull ViewGroup container, @NonNull List<View> clickViews, @Nullable List<View> creativeViews, AdInteractionListener listener);

    /**
     * 注册可点击的View,click/show会在内部完成
     *
     * @param container     渲染广告最外层的ViewGroup
     * @param clickViews    可点击的View的列表
     * @param creativeViews 用于下载或者拨打电话的View
     * @param listener      点击回调
     */
    void registerViewForInteraction(@NonNull ViewGroup container, @NonNull List<View> clickViews, @Nullable List<View> creativeViews, @Nullable View dislikeView, AdInteractionListener listener);

    /**
     * 设置下载监听器
     */
    void setDownloadListener(TTAppDownloadListener downloadListener);

    /**
     * 兼容下载类广告,使用activity申请权限
     */
    void setActivityForDownloadApp(@NonNull Activity activity);
    /**
     * 获取广告的view,如视频广告的view,在广告平台可设置是否自动播放、是否静音等。
     *
     * @return
     */
    View getAdView();

}

插屏广告行为监听

重要!!! AdInteractionListener涉及到广告计费,必须正确调用 convertView必须使用ViewGroup
注意: 不能在子线程调用 TTInteractionAd.showInteractionAd

/**
  * 注册可点击的View,click/show会在内部完成
  * @param container     渲染广告最外层的ViewGroup
  * @param clickViews    可点击的View的列表
  * @param creativeViews 用于下载或者拨打电话的View
  */
//可以被点击的view, 比如标题、icon等,点击后尝试打开落地页,也可以把nativeView放进来意味整个广告区域可被点击
List<View> clickViewList = new ArrayList<>();
clickViewList.add(mAdImageView);

//触发创意广告的view(点击下载或拨打电话),比如可以设置为一个按钮,按钮上文案根据广告类型设定提示信息
List<View> creativeViewList = new ArrayList<>();
//如果需要点击图文区域也能进行下载或者拨打电话动作,请将图文区域的view传入
//creativeViewList.add(nativeView);
creativeViewList.add(mAdImageView);
List<View> imageViewList = new ArrayList<>();
imageViewList.add(mAdImageView);

//重要! 这个涉及到广告计费,必须正确调用。convertView必须使用ViewGroup。
ad.registerViewForInteraction(mRootView, imageViewList,clickViewList, creativeViewList, mDislikeView, new TTNativeAd.AdInteractionListener() {

	//点击普通区域回调
    @Override
    public void onAdClicked(View view, TTNativeAd ad) {

     }
     
	//点击创意区域回调 
    @Override
    public void onAdCreativeClick(View view, TTNativeAd ad) {
       
    }
    
	//广告展示回调
    @Override
    public void onAdShow(TTNativeAd ad) {

    }
});

AdInteractionListener说明

回调 说明
onAdClicked() 点击普通区域回调
onAdCreativeClick() 点击创意区域回调
onAdShow() 广告展示回调

销毁广告对象

在Activity的onDestroy回调方法中销毁广告view

//在Activity的onDestroy方法中清空广告对象
@Override
protected void onDestroy() {
    super.onDestroy();
    if (ad != null) {
        ad = null;
    }
}

参考Demo

自渲染插屏广告请参考Demo中的NativeInteractionActivity示例

自渲染插屏注意点:

1.不能在子线程调用 TTInteractionAd.showInteractionAd

//show弹窗之前一定要加判断
if (Looper.getMainLooper() != Looper.myLooper()) {
       throw new IllegalStateException("不能在子线程调用 TTInteractionAd.showInteractionAd");
  }
  mAdDialog.show();

2.自渲染插屏广告不支持dislike逻辑

文档内容是否对您有帮助?
联系我们