由于laya打包的微信小游戏,都是打包到一个画布再一个页面中运行的,以及项目组和我都没接过,导致后面接东西的很多坑。
1. Banner广告,
由于laya打包的小游戏只有一个页面。而微信小游戏的广告都是建议一个页面的同一个地方只用一个贴片对象。策划那边配的是6个运行再不同地方的贴片广告,最初我的做法是,再页面初始化完成后加载6个贴片,再需要显示的时候,切换显示。后面考虑到性能,说服策划用一个,后面通过上报的埋点数据去统计再哪里点击的。这里就出现第二个坑了:Banner广告没办法做点击埋点。由于banner广告没有相应的点击回调。在查找资料后只能通过这个教程上的方法,进行曲线救国
https://blog.csdn.net/weixin_41753574/article/details/103898376
但问题又来了,laya打包的小游戏在画布中运行,没有对wxml代码进行运作,所以这种方式也不行。策划又希望能看到没个贴片广告的点击,所以又改回了最初的在游戏内用6个贴片的方式。
在最后快上线的时候和制作人他们讨论性能的时候,说这个地方会出现很大的性能耗费,于是又改回了1个的,我哭了QAQQQQQ。
2. 激励视频广告RewardedVideoAd:
微信官方建议为了新能考虑一个页面只放一个激励视频广告,所以在用wx.createRewardedVideoAd接口对激励广告实例化的时候,如果不进行multiton:true的声明的,默认multiton是false:也就是单例的,在一个页面中是单个的。第一个坑我踩在这,一样的策划配了6个激励广告对象,我在没有声明multiton,创建了6个广告对象,在合适的位置show。就相当于在小游戏中只有第一个建立的激励游戏单例对象。于是在微信后台看到的数据明显有错误!,
于是我试了第二种:
按钮A被点击 =》createRewardedVideoAd A广告 -》显示A广告 -》onclose(处理返回事件,A.destroy)
按钮B被点击 =》createRewardedVideoAd B广告 -》显示B广告 -》onclose(处理返回事件,B.destroy)
但这里微信有个BUG:在同一个页面destroy一个激励广告的时候,回导致第二个激励广告拉起出错,并报错
这个部分咨询了微信,他们说这是微信的BUG,建议这种情况最好是做成多例的及建立6个广告对象,需要显示时SHOW。这种可能导致性能消耗过大。最后和制作人商量后,只实例化2个类型的(一个6-15s,一个是15-30S)的两个广告。并在第一次用的时候才createRewardedVideoAd 。(因为之前是放在loading页面createRewardedVideoAd 导致loading过长)