React Native中RewardedAd的EARNED_REWARD回调未触发问题求助
激励广告EARNED_REWARD监听器未触发的可能原因
以下是针对你代码情况的排查方向:
用户未完整观看广告
激励广告的奖励触发前提是用户全程观看广告(不能中途跳过),哪怕是测试广告也需要满足这个条件。确认测试时是否完整看完广告后再关闭。监听器未正确绑定到广告实例
检查rewarded实例的创建时机:如果rewarded是在useEffect外部定义,但初始化晚于监听器注册,会导致监听器绑定到未初始化的实例上,后续广告事件无法触发。确保rewarded实例在注册监听器前已经正确创建。未清理监听器导致内存泄漏
你的代码中定义了unsubscribeLoaded和unsubscribeEarned,但没有在useEffect的清理函数中调用,组件卸载后可能残留旧的监听器绑定,新的广告事件无法被当前组件捕获。需要补充清理逻辑:useEffect(() => { // ... 原有注册监听器和加载代码 return () => { unsubscribeLoaded(); unsubscribeEarned(); }; }, []);广告实例被重复创建或替换
如果在组件其他逻辑中重新创建了rewarded实例,当前useEffect中绑定监听器的是旧实例,新实例的奖励事件不会被触发。确保整个组件生命周期内使用同一个rewarded实例。事件类型常量不匹配
确认react-native-google-mobile-ads的版本,部分版本中奖励事件的常量可能为REWARD_EARNED而非EARNED_REWARD,检查库的类型定义或文档,确保事件类型拼写正确。广告展示方式错误
确保你是通过调用rewarded.show()来展示广告,如果用了其他非官方的展示方式,可能不会触发完整的奖励流程。
内容的提问来源于stack exchange,提问作者Neil
相关产品推荐
相关产品推荐

