谢谢官方回答,问题已解决,是我个人使用问题。 问题出在写cocos按钮事件监听时,用的是clickEvents api的push方法,弹窗两次onEnable,注册了两个相同的点击事件。导致第二次点击时,调了两次wxAd.show方法,第一次show成功拉起广告;第二次show导致报错; 解决方案是: 避免点击事件重复绑定:按钮点击事件从cocos editor中拖拽注册。
多实例模式下,调用同一id的不同广告实例,第二个实例show时会抛错,但却能够拉起广告,影响开发判断// 背景介绍:小游戏开发,广告实例在Modal弹窗组件中,会被多个地方调用 // 开启了 multiton 多实例,但是在第二个地方调用组件时,调用ad.show()会抛出错误,但广告仍能拉起 // 而且错误对象e没有errCode只有errMsg,导致处理异常时只能用正则匹配错误信息,规避这种特殊情况(因为广告正常拉起来了) // 请官方答复,这种hack调用很没安全感!! // 预期: // 已经开启了多实例模式,不应该在第二个实例调用show时报错; // 要么抛出错误,不要拉起广告; this.wxAd = wx.createRewardedVideoAd({ adUnitId: 'adunit-xxx', multiton: true, // 开启了多实例模式 }); try { await this.wxAd.show() .catch(async (e) => { console.log('first try show failed', e); // {"errMsg": ""} no errCode !! // wired behavior under multiton, have to hack... if (/is\sshowed/.test(e.errMsg)) { console.warn(` NOTE: 在多实例状态下,show会抛出错误,但广告仍能拉起,感觉是微信广告巨大的Bug {errMsg: "can't invoke show() while other video-ad is showed"} 已提issue至社区 `); return false; } await this.wxRewardedVideoAd.load() return true; }) .then((shouldShow: boolean) => { if (!shouldShow) return; this.wxRewardedVideoAd.show(); }); } catch(e) { console.error('拉起广告失败', e); this.showToast('拉起广告失败'); }
2021-09-04求官方解释呀,微信小游戏官方为啥不提供服务端判断接口或者回调?这样我们开发侧接入成本很高呀,要做限流+防刷校验
服务端如何判断用户在小程序中是否看完激励广告?我的小程序当前业务逻辑是用户看完激励视频后给用户积分奖励,但目前没有在文档中找到服务端判断用户看完激励广告的方式,所以产生了这个疑问! 如果服务端没有准确的数据来源判断用户看完激励广告,仅凭广告组件close回调来调用接口让服务端给用户添加积分,如果添加积分的接口被拦截,别有用心的人就可以通过模拟器获得token,从而疯狂请求添加积分的接口达到随意给自己加积分的目的!
2021-08-17