logo

帮助中心/文档详情/

Android自渲染Banner广告

简介

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

支持的广告尺寸:

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

权限

自渲染Banner:已回收,不再提供创建

自渲染Banner请求方法

创建TTAdNative对象

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

创建广告请求类型参数AdSlot

注意:
1.setImageAcceptedSize 宽高比按照创建代码位ID时勾选的比例进行设置 单位px
2.setNativeAdType 请求原生广告时候,请务必调用该方法,设置参数为TYPE_BANNER

AdSlot adSlot = new AdSlot.Builder()
        .setCodeId(codeId)
        .setSupportDeepLink(true)
        .setImageAcceptedSize(600, 257)
        .setNativeAdType(AdSlot.TYPE_BANNER) //请求原生广告时候,请务必调用该方法,设置参数为TYPE_BANNER
        .setAdCount(1)
        .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) {
        if (ads.get(0) == null) {
              return;
        }
        //bannerView接入方自行创建
        //mBannerContainer是给bannerView留的布局控件
        View bannerView = LayoutInflater.from(mContext).inflate(R.layout.native_ad, mBannerContainer, false);
        if (bannerView == null) {
              return;
        }
         mBannerContainer.removeAllViews();
         mBannerContainer.addView(bannerView);
         //绑定原生广告的数据 根据不同的广告类型类型 在adapter中接入方把获取到广告的元素添加到对应banner的控件上即可
         setAdData(bannerView, ads.get(0));       
    }
});

NativeAdListener

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

注意:

  • addView前需要把控件上所有的view调用removeAllViews方法移除
  • setNativeAdType(AdSlot.TYPE_INTERACTION_AD)//请求原生广告时候,请务必调用该方法,设置参数为TYPE_BANNER
  • 自渲染banner是在FrameLayout控件上创建一个view 把广告元素添加到view后 把view绑定到对应控件

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();
 
    /**
     * 获取负反馈选项数据
     *
     * @return
     */
    List<FilterWord> getFilterWords();

    /**
     * 获取“为什么看到此广告”的原因 - //3410版本新增
     */
    PersonalizationPrompt getPersonalizationPrompt();

    /**
     * 得到dislike dialog
     *
     * @param activity 建议传当前activity,否则可能会影响dislike对话框弹出
     * @return
     */
    TTAdDislike getDislikeDialog(Activity activity);

    /**
     * 自定义dislike dialog
     *
     * @param dialog 自定义dialog,需要由外部传入
     * @return
     */
    TTAdDislike getDislikeDialog(TTDislikeDialogAbstract dialog);

    /**
     * 获取下载状态控制器
     */
    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会在内部完成,注册dislike按钮
     *
     * @param container     渲染广告最外层的ViewGroup
     * @param clickViews    可点击的View的列表
     * @param creativeViews 用于下载或者拨打电话的View
     * @param dislikeView   dislike按钮
     * @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);

Banner广告行为监听

注:重要! AdInteractionListener涉及到广告计费,必须正确调用 convertView必须使用ViewGroup

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

//触发创意广告的view(点击下载或拨打电话)
List<View> creativeViewList = new ArrayList<>();

//穿山甲logo
ImageView ad_logo = nativeView.findViewById(R.id.iv_native_ad_logo);
ad_logo.setImageBitmap(nativeAd.getAdLogo());
//如果需要点击图文区域也能进行下载或者拨打电话动作,请将图文区域的view传入
//creativeViewList.add(nativeView);
creativeViewList.add(mCreativeButton);

//重要! 这个涉及到广告计费,必须正确调用。convertView必须使用ViewGroup。
ad.registerViewForInteraction((ViewGroup) nativeView, imageViewList,clickViewList, creativeViewList, imgDislike, 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() 广告展示回调

TTAdDislike

SDK为接入方提供了信息流广告,当用户选择关闭广告时会有以弹窗形式询问用户,包含“不感兴趣”、“看过了”选项供用户选择。该反馈主要用于头条广告对用户端的广告策略,用来优化提升广告的点击率,提升广告效果及合作伙伴的收益

注意:
如果使用Dislike逻辑,初始化TTAdNative mTTAdNative =
ttAdManager.createAdNative(activity)时,参数务必传入activity

Banner广告接入Dislike

在获得TTNativeAd后,调用TTNativeAd.getDislikeDialog()获取TTAdDislike对象,然后为该对象设置用户选择结果回调。

以下逻辑为穿山甲3500版本SDK中逻辑,3500以下版本SDK开发者可参考对应demo进行集成:

private void bindDislikeAction(View dislike, final TTFeedAd ad, boolean isCustomDislike) {
        if (isCustomDislike) {
            // 使用自定义Dislike,用户选择"为什么看到此广告",开发者需要执行startPersonalizePromptActivity逻辑进行跳转
            final DislikeInfo dislikeInfo = ad.getDislikeInfo();
            if (dislikeInfo == null || dislikeInfo.getFilterWords() == null || dislikeInfo.getFilterWords().isEmpty()) {
                return;
            }
            final DislikeDialog dislikeDialog = new DislikeDialog(this, dislikeInfo);
            dislikeDialog.setOnPersonalizationPromptClick(new DislikeDialog.OnPersonalizationPromptClick() {
                @Override
                public void onClick(PersonalizationPrompt personalizationPrompt) {
                    TToast.show(FeedVideoActivity.this, "点击了为什么看到此广告");
                }
            });
            ad.setDislikeDialog(dislikeDialog);
            dislike.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dislikeDialog.show();
                }
            });
        } else {
            // 使用默认Dislike
            final TTAdDislike ttAdDislike = ad.getDislikeDialog(this);
            dislike.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (ttAdDislike != null)
                        ttAdDislike.showDislikeDialog();
                }
            });
        }
    }
关闭广告监听
DislikeInteractionCallback
回调 说明
onItemClick() 自定义样式情况下用户点击filterWord回调
onClick() 自定义样式情况下用户点击了”为什么看到此广告“
onSelected() 默认dislike样式,点击filterWord回调。开发者可以在此回调中移除广告
onCancel() 默认dislike样式,点击取消回调
onShow() 默认dislike样式,dislike弹窗展示回到
onRefuse() 默认dislike样式,用户重复点击dislike按钮回调,3600版本废除

销毁广告对象

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

参考Demo

自渲染Banner广告请参考Demo中的NativeBannerActivity示例

自渲染Banner注意点:

1、setImageAcceptedSize 宽高比按照创建代码位ID时勾选的比例进行设置 单位px
2、setNativeAdType 请求原生广告时候,请务必调用该方法,设置参数为TYPE_BANNER
3、必须正确调用 convertView必须使用ViewGroup

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