如何测试Facebook Instant Game中的奖励视频广告?
测试Facebook Instant Game奖励视频广告的完整指南
嘿,我来帮你搞定Facebook Instant Game里奖励视频广告的测试问题,顺便给你的代码做些优化建议~
一、测试前的必要准备
- 先确保你的游戏在Facebook开发者后台正确配置了奖励视频广告位(就是你代码里的
1234_1234,得是后台创建好的有效广告位,或者直接用Facebook官方的测试ID) - 一定要用测试账号,或者把你的个人账号添加到游戏的测试白名单里——不然可能看不到测试广告,甚至触发真实广告的限制
- 在Instant Games的测试环境运行游戏(比如用FBInstant的官方测试工具,或者通过Facebook页面的测试入口打开你的游戏)
二、针对你的代码优化测试流程
先把你提供的代码贴出来,然后一步步调整成适合测试的版本:
你的原始代码片段:
var ad; FBInstant.getRewardedVideoAsync('1234_1234') .then(function(rewardedVideo) { if(typeof rewardedVideo !== 'undefined'){ if(typeof rewardedVideo.getPlacementID() === 'undefined'){ console.log('can not get placement ID') } ad = rewardedVideo; return rewardedVideo.loadAsync() } else { return Promise.reject(new Error('rewardedVideo is undefined')) } }) .then(function(){ //adv loaded console.log('adv loaded') }) .catch(function(error){ console.log(error.code, error.message); })
1. 先换成官方测试广告ID
Facebook提供了专门的测试奖励视频ID,用这个ID能确保你一定能拿到测试广告,避免真实广告的填充问题:
- 奖励视频测试ID:
1278506685576667_1278507025576633
2. 补充广告播放和奖励逻辑(你的代码缺了这部分!)
要完整测试广告流程,必须加上广告播放、关键事件监听的代码——这样你才能验证广告是否正常播放,以及奖励是否正确发放:
var ad; // 替换成官方测试ID FBInstant.getRewardedVideoAsync('1278506685576667_1278507025576633') .then(function(rewardedVideo) { if(!rewardedVideo){ return Promise.reject(new Error('rewardedVideo is undefined')) } // 监听广告关键事件,方便测试时看日志 rewardedVideo.onStart(function() { console.log('✅ 广告开始播放'); }); rewardedVideo.onComplete(function() { console.log('🎉 广告播放完成,现在可以发放奖励啦!'); // 这里写你的奖励逻辑:比如给用户加金币、解锁道具 // 示例:userData.coins += 100; }); rewardedVideo.onError(function(err) { console.error('❌ 广告出错:', err.code, err.message); }); rewardedVideo.onSkipped(function() { console.log('⚠️ 用户跳过了广告,不发放奖励'); }); ad = rewardedVideo; return rewardedVideo.loadAsync() }) .then(function(){ console.log('📥 广告加载完成,调用playAsync就能播放了'); // 测试时可以在这里主动调用播放,或者绑定到游戏内的按钮点击事件 // 比如:document.getElementById('watch-ad-btn').addEventListener('click', () => { // ad.playAsync().catch(err => console.error('播放失败:', err)); // }); }) .catch(function(error){ console.error('❌ 广告加载失败:', error.code, error.message); })
3. 具体测试步骤
- 把代码替换成上面的版本,用官方测试ID
- 打开浏览器控制台(按F12),然后在测试环境运行游戏
- 查看控制台日志:
- 如果看到
📥 广告加载完成,说明广告加载成功 - 触发广告播放后(比如绑定按钮点击),会弹出测试广告,播放完成后会看到
🎉 广告播放完成,现在可以发放奖励啦!的日志,这时候检查你的奖励逻辑是否正常执行 - 如果出现错误,根据控制台的错误码和信息排查(比如
INVALID_PLACEMENT表示广告位ID无效,用测试ID的话基本不会遇到这个问题)
- 如果看到
三、常见测试问题排查
- 看不到广告:检查是否用了测试账号,广告位是否在后台正确配置,或者是否替换成了官方测试ID
- 广告加载失败:看错误码,
NETWORK_ERROR是网络问题,NO_FILL是没有广告填充(用测试ID可以避免) - 奖励不发放:确认
onComplete事件绑定正确,而且奖励逻辑没有报错(可以在奖励代码里加日志验证)
内容的提问来源于stack exchange,提问作者tuananh




