大家可以先参考我的上一篇博客 信息流广告 传送门

首先创建一个脚本具体内容如下

package com.unity3d.player.chuanshanjia;import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.Toast;import com.bytedance.sdk.openadsdk.AdSlot;
import com.bytedance.sdk.openadsdk.TTAdConstant;
import com.bytedance.sdk.openadsdk.TTAdDislike;
import com.bytedance.sdk.openadsdk.TTAdLoadType;
import com.bytedance.sdk.openadsdk.TTAdNative;
import com.bytedance.sdk.openadsdk.TTAppDownloadListener;
import com.bytedance.sdk.openadsdk.TTNativeExpressAd;
import com.unity3d.player.tools.ChuanShanJiaUtil;
import com.unity3d.player.tools.TToast;import java.util.List;public class BannerActivity {private static BannerActivity _Insstance;public static BannerActivity Inst(){if(_Insstance == null){_Insstance = new BannerActivity();}return _Insstance;}private TTAdNative mTTAdNative;private FrameLayout mExpressContainer;private Context mContext;private TTAdDislike mTTAdDislike;private final long startTime = 0;private boolean mHasShowDownloadActive = false;public void Init(Context context,FrameLayout frameLayout,String codeId) {mContext = context;mExpressContainer = frameLayout;//step2:创建TTAdNative对象mTTAdNative = TTAdManagerHolder.get().createAdNative(context);//step3:可选,强烈建议在合适的时机调用):申请部分权限,如read_phone_state,防止获取不了imei时候,下载类广告没有填充的问题。TTAdManagerHolder.get().requestPermissionIfNecessary(context);loadBannerAd(codeId);}private void loadBannerAd(String codeId) {//step4:创建广告请求参数AdSlot,注意其中的setNativeAdtype方法,具体参数含义参考文档int width = ChuanShanJiaUtil.getScreenWidthInPx(mContext);int height = ChuanShanJiaUtil.getScreenHeight(mContext);AdSlot adSlot = new AdSlot.Builder().setCodeId(codeId) //广告位id.setSupportDeepLink(true).setAdCount(1) //请求广告数量为1.setExpressViewAcceptedSize(width,60) //期望模板广告view的size,单位dp.setAdLoadType(TTAdLoadType.LOAD)//推荐使用,用于标注此次的广告请求用途为预加载(当做缓存)还是实时加载,方便后续为开发者优化相关策略.build();//step5:请求广告,对请求回调的广告作渲染处理mTTAdNative.loadBannerExpressAd(adSlot, new TTAdNative.NativeExpressAdListener() {//请求失败回调@Overridepublic void onError(int code, String message) {TToast.show(mContext, "load error : " + code + ", " + message);mExpressContainer.removeAllViews();}//请求成功回调@Overridepublic void onNativeExpressAdLoad(List<TTNativeExpressAd> ads) {if (ads.get(0) == null) {return;}final TTNativeExpressAd ad = ads.get(0);ad.setSlideIntervalTime(30 * 1000);bindAdListener(ad);ad.render();TToast.show(mContext,"load success!");}});}private void bindAdListener(TTNativeExpressAd ad) {ad.setExpressInteractionListener(new TTNativeExpressAd.ExpressAdInteractionListener() {@Overridepublic void onAdClicked(View view, int type) {TToast.show(mContext, "广告被点击");}@Overridepublic void onAdShow(View view, int type) {TToast.show(mContext, "广告展示");}@Overridepublic void onRenderFail(View view, String msg, int code) {Log.e("ExpressView", "render fail:" + (System.currentTimeMillis() - startTime));TToast.show(mContext, msg + " code:" + code);}@Overridepublic void onRenderSuccess(View view, float width, float height) {Log.e("ExpressView", "render suc:" + (System.currentTimeMillis() - startTime));//返回view的宽高 单位 dpTToast.show(mContext, "渲染成功");mExpressContainer.removeAllViews();mExpressContainer.addView(view);}});//dislike设置bindDislike(ad, false);if (ad.getInteractionType() != TTAdConstant.INTERACTION_TYPE_DOWNLOAD) {return;}ad.setDownloadListener(new TTAppDownloadListener() {@Overridepublic void onIdle() {TToast.show(mContext, "点击开始下载", Toast.LENGTH_LONG);}@Overridepublic void onDownloadActive(long totalBytes, long currBytes, String fileName, String appName) {if (!mHasShowDownloadActive) {mHasShowDownloadActive = true;TToast.show(mContext, "下载中,点击暂停", Toast.LENGTH_LONG);}}@Overridepublic void onDownloadPaused(long totalBytes, long currBytes, String fileName, String appName) {TToast.show(mContext, "下载暂停,点击继续", Toast.LENGTH_LONG);}@Overridepublic void onDownloadFailed(long totalBytes, long currBytes, String fileName, String appName) {TToast.show(mContext, "下载失败,点击重新下载", Toast.LENGTH_LONG);}@Overridepublic void onInstalled(String fileName, String appName) {TToast.show(mContext, "安装完成,点击图片打开", Toast.LENGTH_LONG);}@Overridepublic void onDownloadFinished(long totalBytes, String fileName, String appName) {TToast.show(mContext, "点击安装", Toast.LENGTH_LONG);}});}/*** 设置广告的不喜欢, 注意:强烈建议设置该逻辑,如果不设置dislike处理逻辑,则模板广告中的 dislike区域不响应dislike事件。** @param ad* @param customStyle 是否自定义样式,true:样式自定义*/private void bindDislike(TTNativeExpressAd ad, boolean customStyle) {//使用默认模板中默认dislike弹出样式ad.setDislikeCallback((Activity) mContext, new TTAdDislike.DislikeInteractionCallback() {@Overridepublic void onShow() {TToast.show(mContext, "bindDislike setDislikeCallback onShow");}@Overridepublic void onSelected(int position, String value, boolean enforce) {TToast.show(mContext, "点击 " + value);mExpressContainer.removeAllViews();//用户选择不喜欢原因后,移除广告展示if (enforce) {TToast.show(mContext, "模版Banner 穿山甲sdk强制将view关闭了");}}@Overridepublic void onCancel() {TToast.show(mContext, "点击取消 ");}});}
}

使用方式  这个Framelayout在上一篇文章中有写传送门

public void CallBanner(String codeId){Log.d(TAG, "CallBanner: "+codeId);FrameLayout mExpressBannerContainer = findViewById(R.id.banner_container);BannerActivity.Inst().Init(this,mExpressBannerContainer,codeId);}

下一篇 激励视频广告 传送门

Android 接入穿山甲SDK之Banner广告相关推荐

  1. Android 接入穿山甲SDK之信息流广告

    大家可以先参考我的上一篇博客 插屏广告 传送门 首先创建一个脚本具体内容如下 package com.unity3d.player.chuanshanjia;import android.annota ...

  2. Android 接入穿山甲SDK之开屏广告

    大家可以先参考我的上一篇博客介绍了如何集成SDK以及一些工具类传送门 首先创建一个脚本写入如下内容 package com.unity3d.player.chuanshanjia;import and ...

  3. Android 接入穿山甲SDK之插屏广告

    大家可以先参考我的上一篇博客 开屏广告 传送门 首先创建一个脚本具体内容如下 package com.unity3d.player.chuanshanjia;import android.annota ...

  4. Android接入穿山甲SDK并实现开屏广告

    一.穿山甲SDK的接入 0.进入官方下载地址,下载穿山甲AndroidSDK,下载的压缩包里包含.aar的sdk文件和工程demo. 1.将 SDK 压缩包内的 open_ad_sdk.aar 复制到 ...

  5. Android 接入穿山甲激励视频广告步骤与错误总结

    1.先去穿山甲官网,注册登录账号 2.侧边栏->广告变现->流量->应用->新建应用 3.侧边栏->广告变现->流量->代码位->新建代码位 4. 侧边 ...

  6. Android端穿山甲SDK集成

    Android端穿山甲SDK集成 流程 创建测试状态的应用及应用下对应的测试状态的代码位ID 项目对接SDK完毕后 拿APP到应用商店审核 得到应用商店的APP的下载地址 结合文档转换成apk下载地址 ...

  7. ios sdk 穿山甲_Creator iOS接入穿山甲SDK

    首先介绍一下 .m文件与.mm文件有什么区别 .m文件 支持C ,OC .mm文件 支持C,C++,OC OC 与 TS 互调,例子有很多,比如官方的例子里面就有 TS 调用OC的时候有个点 初学者可 ...

  8. 穿山甲sdk激励视频广告关闭按钮引发的bug排查及解决

    项目中接入了穿山甲广告,其中包括图文广告和视频广告,后期发现一个偶现的问题,就是看完激励视频广告后,点击视频页面的关闭按钮,此时回到了app源生页面,UI卡住了,本来看完视频有个加分操作,现在没了.排 ...

  9. CocosCreator接入穿山甲SDK(IOS)--激励视屏

    参考 环境:MAC,xCode11,CocosCreator2.3.1 有关CocosCreator与Object-C如何交互的问题,参考文章: https://blog.csdn.net/ZFSR0 ...

最新文章

  1. 使用Session防止表单重复提交
  2. Android Platform Codenames, Versions, API Levels, and NDK Releases
  3. 中科大计算机专业少实习_为什么很少有计算机科学专业的人?
  4. 【Pytorch】tensorboardX==》数据可视化
  5. 什么样的网站建设公司才是值得信赖的?
  6. MongoDB基本语法和操作入门
  7. 面试妥了!2020 爬虫面试题目合集
  8. python21天打卡Day12--for循环,列表推导式-构建列表
  9. 多视角子空间学习系列之 CCA 典型相关分析
  10. Nginx通过反向代理实现单端口访问多个服务
  11. 大漠插件注册使用方法教程
  12. [不好分类]《凤凰项目》读后感
  13. 深度学习论文翻译解析:YOLOv4: Optimal Speed and Accuracy of Object Detection
  14. OSError: [WinError 193] %1 不是有效的 Win32 应用程序(完整的解决方案)
  15. Ubuntu的下载安装教程--本人亲测
  16. android支持svg格式图片么,Android Studio2.0中使用SVG图片格式
  17. 三、vue3--生命周期、Hook函数、 toRef和toRefs、其他的组合式API
  18. oracle外部表kup-04023,Oracle Data Guard 主库报--RFS Possible network disconnect with primary database...
  19. CVPR2020 | MAL:联合解决目标检测中的定位与分类问题,自动选择最佳anchor
  20. javascript国际化_如何在JavaScript中实现国际化(i18n)

热门文章

  1. 移动云Mas发送普通短信和模板短信
  2. disallow api.php,爬虫之robots.txt
  3. winform中rdlc报表配置
  4. Mac关机后无法重启和重启进度条走到一半死机的解决方案
  5. Python视频字幕识别——pytesseract
  6. SAP WEB IDE local 安装
  7. 教你如何使用语雀提高效率
  8. 阿里用技术帮用户剁手——《尽在双11——阿里巴巴技术演进与超越》
  9. 赠书:支付平台架构业务、规划、设计与实现
  10. slf4j的包使用说明