Cocos 激励视频回调不触发怎么排查
广告播完了,玩家也看完了,奖励没发出去——这种时候后台数据是正常的,只有你知道出事了。Cocos 激励视频回调不触发,排查顺序比猜原因重要,下面是我实际用的一套流程。
先打日志,确认卡在哪一环
别急着改代码,先把链路拆成三段:加载成功没有、展示成功没有、回调有没有进来。
具体动作:在这三个位置各打一条日志,跑一次真机,看日志停在哪儿。大多数人的问题是不打日志直接猜。
如果三段日志全有,那问题不在 SDK,在你的奖励逻辑。如果停在第二段,是加载或环境问题。
确认回调挂在了不会被销毁的对象上
这是头号原因,没有之一。场景切换会销毁场景节点,回调如果挂在场景里的某个节点上,节点一没,回调就再也不会执行。
而且这时候广告其实播完了,玩家也看完了,你的奖励逻辑一行都没跑。激励视频回调不触发这件事,九成不是 SDK 的锅。
具体动作:把回调改挂到常驻节点或全局管理器上,重新跑一次。
确认实例是新建的,也不是被自己逻辑挡住的
有人在启动时创建一次广告对象,之后一直复用。展示过一次之后,这个实例的状态已经变了,再拿它去展示往往会静默失败——不报错,也不回调。
另一种情况更隐蔽:回调其实进来了,但你的代码在里面提前 return 了。常见写法是先判断玩家是不是已经领过奖励,领过就 return。如果标记位在展示前就被置上,回调进来直接被拦掉,表现和「回调不触发」一模一样。
具体动作:每次展示前重新创建实例并重新挂载回调;同时在回调函数第一行打日志,第一行没打印才是真的没进来。
确认能在真机上复现,并注意时机
编辑器预览的广告环境和真机不是一回事。有些问题只在真机上出现,比如网络限制、SDK 版本差异。在编辑器里反复调试一个真机问题,是纯粹的浪费时间。
还有一点是时机。回调不会在你调用展示的那一行之后立刻执行,中间隔着玩家观看的整段时间。如果你的奖励逻辑依赖某个外部状态,而那个状态在等待期间被改了,回调进来时看到的就是另一套数据。
具体动作:任何回调问题先保证能在真机上稳定复现;回调里需要的数据在展示前就快照下来,别现取。
激励视频回调不触发,按这个顺序走
按这个顺序走,基本不会绕路。
先打日志定位环节,再查回调挂载对象,然后确认实例是新建的,接着看自己的逻辑有没有拦截,最后保证在真机上复现。
Cocos 激励视频回调不触发,真正的原因通常是回调挂的地方不对,或者实例被复用了。
常见问题
Q:Cocos 激励视频回调不触发,最可能是什么原因?
A:回调挂在了会被销毁的场景节点上。场景一切换节点没了,广告照播,回调不再执行。
Q:广告播完了但没回调,是不是 SDK 有问题?
A:先别怀疑 SDK。在回调函数第一行打日志,如果这行没打印,才说明回调真的没进来,否则是你自己的逻辑拦住了。
Q:编辑器里回调正常,真机不触发怎么办?
A:以真机为准。编辑器不具备完整广告环境,真机上重跑一遍日志,按加载、展示、回调三段依次定位。
相关阅读
- 小游戏 eCPM 忽高忽低是什么原因
- Cocos 接微信广告 SDK 的完整步骤
- Cocos 接广告 SDK 加载失败怎么排查
- Cocos 接广告最容易写错的 6 个地方
- 小游戏广告 SDK 真机测试要测哪几项
本文作者西米,37 岁程序员,一个人加五个 AI 员工在跑一家公司。踩过的坑和真实账本都写在公众号「西米分享」。
完整代码、踩坑清单与最新进展,都在公众号。
📱 关注公众号「西米分享」