SDK初始化的问题我就不在继续说了,前面的文章说过了,直接说接banner的逻辑,说到这banner确实是有些麻烦,因为demo给的工程是一个android工程,和游戏的android工程还有些不一样,所以这里也出现的一点问题,后续我慢慢说。其实逻辑和demo里的调用逻辑是一样的,只不过我们需要自己去创建一个空的view,为什么呢,如果你按照他的流程走过一遍之后你会发现,banner渲染成功了,但是并没有展示,仔细在一看其实他是加载成功banner后会返回给你一个view,你需要自己去创建一个空的view可以比作一个容器去承载这个banner一直悬浮在屏幕上,可在游戏在android中用的是Cocos2dxGLSurfaceView,所以如果你和工程里demo一样使用
setContentView(R.layout.activity_native_express);这方法去创建一个view那么你最后是会显示banner但是你游戏的画面就不会渲染了(除了banner其他地方都是黑屏),那么要怎么解决这个问题?我们可以创建一个空view然后嵌入在cocos的界面上就解决了,但是要怎么做,我也是看了这个链接才有的解决办法https://my.oschina.net/valiancer/blog/3063401。好废话不多说直接上代码逻辑,
首先在你之前创建好的res文件夹下面创建一个layout文件夹,然后创建一个名为activity_native_express的xml文件代码如下

这样我们就创建了一个空的…额这个算是一个空的view吧,我不懂android不懂怎么称呼,就算是我们的容器创建完了然后在主要逻辑中引用一下,代码如下

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><RelativeLayoutandroid:id="@+id/express_container"android:layout_width="match_parent"android:layout_height="100dp"<!--置于底部-->android:layout_alignParentBottom="true"/>
</RelativeLayout>

//在oncreate中调用

//在oncreate中调用
public  void creatrView(){//原生的view直接添加到cocos的view内//R代表你是哪个包名的R文件,然后把创建好的view嵌入在你的cocosview里,不要使用setContentView(R.layout.activity_native_express);创建viewView layout = LayoutInflater.from(this).inflate(R.layout.activity_native_express, null);mFrameLayout.addView(layout);mExpressContainer = (RelativeLayout) findViewById(R.id.express_container);//mFrameLayout.addView(view, layoutParams);//如已绘制SurfaceView则在surfaceView上一层绘制,必须addView之后使用//getGLSurfaceView().setZOrderMediaOverlay(true);//cocos的view是否在上层//getGLSurfaceView().setZOrderOnTop(true);getGLSurfaceView().getHolder().setFormat(PixelFormat.TRANSLUCENT);
}

创建好了view之后我们就可以按照正常逻辑继续往下走了,代码如下

//初始化banner广告

public void chuanShanJiaInitBanner(){getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);//step2:创建TTAdNative对象,用于调用广告请求接口,createAdNative(Context context) 插屏广告context需要传入Activity对象mTTBannerAdNative = TTAdManagerHolder.get().createAdNative(getApplicationContext());//step3:(可选,强烈建议在合适的时机调用):申请部分权限,如read_phone_state,防止获取不了imei时候,下载类广告没有填充的问题。TTAdManagerHolder.get().requestPermissionIfNecessary(this);
}
//加载banner广告 在你需要加载广告的时候调用,
public static void loadBanner(final String placementId,final String adsSign){Log.e("andoird调用加载banner广告","loadBanner");//不在OnUiThread这个线程中调用肯定会报错this.runOnUiThread(new Runnable() {@Overridepublic void run() {//显示mExpressContainer.setVisibility(View.VISIBLE);}});float expressViewWidth = 600;float expressViewHeight = 150;//step4:创建广告请求参数AdSlot,具体参数含义参考文档AdSlot adSlot = new AdSlot.Builder().setCodeId("广告位id") //.setSupportDeepLink(true).setAdCount(1) //请求广告数量为1到3条.setExpressViewAcceptedSize(expressViewWidth,expressViewHeight) //期望模板广告view的size,单位dp.setImageAcceptedSize(600,150 )//这个参数设置即可,不影响模板广告的size.build();//step5:请求广告,对请求回调的广告作渲染处理mTTBannerAdNative.loadBannerExpressAd(adSlot, new TTAdNative.NativeExpressAdListener() {@Overridepublic void onError(int code, String message) {Log.e("加载banner出现错误",message);//mExpressContainer.removeAllViews();}@Overridepublic void onNativeExpressAdLoad(List<TTNativeExpressAd> ads) {if (ads == null || ads.size() == 0){return;}mTTBanner = ads.get(0);bindBannerListener(mTTBanner);mTTBanner.render();}});
}
//绑定Banner的回调事件
private static void bindBannerListener(TTNativeExpressAd ad) {ad.setExpressInteractionListener(new TTNativeExpressAd.ExpressAdInteractionListener() {@Overridepublic void onAdClicked(View view, int type) {Log.e("Banner被点击","点击");}@Overridepublic void onAdShow(View view, int type) {Log.e("广告Banner展示成功","successful");}@Overridepublic void onRenderFail(View view, String msg, int code) {//Log.e("ExpressView","render fail:"+(System.currentTimeMillis() - startTime));//TToast.show(mContext, msg+" code:"+code);Log.e("广告Banner渲染失败","Fail");}@Overridepublic void onRenderSuccess(View view, float width, float height) {Log.e("广告Banner渲染成功","successful");//Log.e("ExpressView","render suc:"+(System.currentTimeMillis() - startTime));//返回view的宽高 单位 dp//TToast.show(mContext, "渲染成功");mExpressContainer.addView(view);                    }});if (ad.getInteractionType() != TTAdConstant.INTERACTION_TYPE_DOWNLOAD){return;}ad.setDownloadListener(new TTAppDownloadListener() {@Overridepublic void onIdle() {//TToast.show(BannerExpressActivity.this, "点击开始下载", Toast.LENGTH_LONG);}@Overridepublic void onDownloadActive(long totalBytes, long currBytes, String fileName, String appName) {Log.e("下载中",appName);}@Overridepublic void onDownloadPaused(long totalBytes, long currBytes, String fileName, String appName) {//TToast.show(BannerExpressActivity.this, "下载暂停,点击继续", Toast.LENGTH_LONG);}@Overridepublic void onDownloadFailed(long totalBytes, long currBytes, String fileName, String appName) {//TToast.show(BannerExpressActivity.this, "下载失败,点击重新下载", Toast.LENGTH_LONG);}@Overridepublic void onInstalled(String fileName, String appName) {//TToast.show(BannerExpressActivity.this, "安装完成,点击图片打开", Toast.LENGTH_LONG);}@Overridepublic void onDownloadFinished(long totalBytes, String fileName, String appName) {//TToast.show(BannerExpressActivity.this, "点击安装", Toast.LENGTH_LONG);}});
}
//关闭广告销毁banner 如果你不需要广告显示,可以在想关闭的地方调用,也就是隐藏掉
public static void closeBanner(final String placementId,final String adsSign){Instance.runOnUiThread(new Runnable() {@Overridepublic void run() {mExpressContainer.setVisibility(View.GONE);}});if (mTTBanner != null) {mTTBanner.destroy();}
}

好了,到此为止三部分我都说完了,我难受了两天接穿山甲的广告,不过还好的是弄完了,这其中出现很多的问题都需要慢慢解决才好,对了,还没说一下,如果你在打包的时候可能会出现警告过多而导致打包失败,我说的是正式版的包啊,
错误是这个“transformClassesAndResourcesWithProguardForRelease”,应该是混淆代码的问题吧,导致了我的警告有点多,然后直接打包失败了,因为android这部分我确实不太懂,以及代码混淆,所以我直接在proguard-rules.pro这个文件下添加了-ignorewarning这个,忽略警告…虽然这样不太好,关键是没有一位android大神给我指点一下这些问题,我这全靠自己一个不懂android会点游戏的在这接android的sdk,so最后忽略了警告也确实是打出正式包了,这个问题的解决也是在这个链接下看到的https://www.cnblogs.com/wood3/p/7018280.html,我弄android的时候就料到开头是前路坎坷多啊,没料到结尾却是一步一个坎啊,好在都弄完了,仅此留笔。
————————————————
版权声明:本文为CSDN博主「橘子呀c」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34772097/article/details/101475793

CocosCreator接入穿山甲广告3-底部banner相关推荐

  1. CocosCreator接入穿山甲广告总结

    最近项目开始接入国内广告变现,接的是穿山甲sdk广告,接入的过程真的是各种坎坷,我会分为激励视频,插屏广告,底部banner三部分,在后续的文章中会一点点详细的把这三部分都总结出来,给有恰好需要的朋友 ...

  2. CocosCreator接入穿山甲广告(IOS)

    说明 接入穿山甲广告SDK 将Cocos Creator工程打包,在手机上运行,看能否正常运行游戏,保证游戏没有问题的前提下再引入SDK所需要的各种包 根据文档引入各种包,文档地址:https://p ...

  3. CocosCreator接入穿山甲广告2-插屏广告

    看过上一篇文章的小伙伴,我这里就不在进行对初始化等进行墨迹,直接上插屏广告的逻辑,一般在游戏比如关卡结束的时候会弹出插屏广告. 穿山甲sdk初始化后,在oncreate方法里直接调用chuanShan ...

  4. CocosCreator接入穿山甲广告1-激励视频

    首先进入文档后要先去下载它文档里的sdk,这个压缩包里面含有demo,没有头绪的朋友可以进入他的工程看下,也可在模拟器上运行一下它的demo看下效果.下载完后可以进入他工程下的libs的文件夹里把两个 ...

  5. Unity接入穿山甲广告(使用Unity3D插件)

      最近要接入穿山甲广告,我把穿山甲广告相关的接入流程记录一下,说说最近踩过的坑,和怎么解决的问题.注意我们需求是只发安卓包没有iOS的需求,本篇只介绍Unity接入安卓相关的处理(帖子是2019年底 ...

  6. Unity接入穿山甲广告SDK(以及GroMoreDemo)

    Unity接入穿山甲广告SDK(以及GroMoreDemo) 下载安装 穿山甲官网SDK下载链接(https://www.csjplatform.com/union/media/union/downl ...

  7. 无需上架,接入穿山甲广告和广点通广告 sdk

    我们都知道广告是商业流量变现最重要的方式之一,所以基本所有的游戏或者app都会接入广告sdk,而我们都知道穿山甲广告sdk和广点通广告sdk是国内收益相对比较高的,但是想接入穿山甲广告sdk,你的游戏 ...

  8. 如何设置 穿山甲广告GroMore中banner的广告位置

    记录接入广告时候 遇到的问题 默认的实在中间显示 ,实际的情况我们肯定想在底部显示广告. 这样显示才是我们想要的结果,在应用底部显示 在接入广告的时候一直找不到哪里修改banner的位置,问了官方也没 ...

  9. Android 如何接入穿山甲广告?

    目录 下载SDK 集成SDK AndroidManifest配置 provider配置 运行环境配置 白名单配置 工具类 下载SDK 首先去穿山甲官网注册账号以及创建应用 点击进入平台 (我的是创建完 ...

最新文章

  1. day04 JDBC java数据库连接
  2. python的变量和简单的数据类型
  3. 如何玩转PDF?5款简单好用的PDF工具推荐
  4. HDU - 2896 病毒侵袭(AC自动机)
  5. String字符串拼接小例
  6. 最懂基金经理的第三方机构猫头鹰,到底是谁?
  7. 计算机应用基础题excel,计算机应用基础专练习题excel.doc
  8. c++17好用的新特性总结
  9. gmail邮箱注册_Android中的Google帐户集成–使用Gmail登录
  10. 咖世家咖啡与瑞士莲首度跨界合作,打造联名快闪店
  11. Windows 远程桌面连接命令
  12. flashfxp用什么协议连接服务器,flashfxp怎么连接,flashfxp怎么连接,具体的连接方法...
  13. 黄油安卓_寻找可爱,定义外观为黄油皇家字符
  14. 短信验证码是什么?在网站中起到什么作用?
  15. var、let和const
  16. Android记录15--关于ListView中adapter调用notifyDataSetChanged无效的原因
  17. 在德国注册商标的两种途径
  18. 相对论-导论(一文看懂所有核心思想)
  19. 寒假之视频压缩笔记——FPGA 视频拼接器的底板
  20. 个人纪录unity2020改黑色主题

热门文章

  1. 论文笔记-recsys'12-Xbox推荐系统: Bayesian MF
  2. 学习-Java输入输出之OutputStream类之字节数据输出
  3. Qt中的套件提示no complier set in kit和no debugger,出现黄色感叹号问题解决(MSVC2017)
  4. 【ACM/ICPC训练】委派任务
  5. 【生成模型】Stable Diffusion原理+代码
  6. 租不起房,吃不起饭, Web3 打工人逃离新加坡
  7. 家校互动、班级管理系统
  8. 基于STM32F1的孤立词语语音识别
  9. ddns 动态域名解析(Dynamic DNS,简称DDNS)
  10. 我透!用Python能做炫酷的小姐姐动态壁纸?