You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何测试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

火山引擎 最新活动