react-native-firebase/admob rewardedAd.load()第二次不工作 [英] react-native-firebase/admob rewardedAd.load() not working the second time

查看:140
本文介绍了react-native-firebase/admob rewardedAd.load()第二次不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

rewardedAd.load()第二次不加载广告.在显示的第一个广告的加载,显示,回调方面一切正常,当我再次执行rewardedAd.load()以加载另一个广告时,什么也没有发生.没有错误,没有回调.然后明显地调用rewardedAd.show()会引起admob/未就绪错误.

rewardedAd.load() does not load ad on the second time. Everything works fine with the loading, showing, callbacks for the first ad shown, when I then do a rewardedAd.load() again to load another ad, nothing happens. No errors, no callbacks. Then obviously calling rewardedAd.show() rusults in a admob/not-ready error.

此问题在admob/firebase版本6.2.0和6.3.1中出现

This problem occurs in admob/firebase versions 6.2.0 and 6.3.1

if(environment == 'development'){
  rewardedAd = RewardedAd.createForAdRequest(TestIds.REWARDED)
}
else if(environment == 'production'){
  rewardedAd = RewardedAd.createForAdRequest(settings.adsUnitIds.ios.real)
}
// --

rewardedAd.onAdEvent((type, error, reward) => {
  console.log('onAdEvent, type:', type, ', error:', error)
  if(type === RewardedAdEventType.LOADED){
    dispatch({ type: 'AD_LOADED' })
  }

  if(type == 'closed'){ // RewardedAdEventType.CLOSED isn't defined (probably bug), so just made it "closed", which works
    console.log('ad closed, rewarded:', rewarded)
    if(rewarded == true){
      if(!doubleReward){
        dispatch(rewardCoins(settings.coins.ad, 'watched-ad'))
      }
      else {
        dispatch(rewardCoins(settings.coins.ad*2, 'watched-ad'))
      }
      rewarded = false
    }
    dispatch({ type: 'AD_CLOSED', rewarded: rewarded })

    if(showEnded) showEnded()

    setTimeout(() => { // Cannot reproduce bug where re-request of ad isn't available so adding this just in case
      console.log('Start ad re-request')
      console.log('Do we have rewardedAd variable? :', rewardedAd)
      rewardedAd.load()
    }, 200)
  }

  if(type === RewardedAdEventType.EARNED_REWARD){
    console.log('earned reward!')
    dispatch({ type: 'AD_REWARDED' })
    rewarded = true
  }

  if(type === RewardedAdEventType.ERROR){
    console.info('Some error with ad:', error)
  }
})

rewardedAd.load()

推荐答案

如何在显示后尝试自动加载?

How about try this for auto load after shown?

rewardedAd.onAdEvent((type, error, reward) => {
  ...
  if (!rewardedAd.loaded) rewardedAd.load()
})

这篇关于react-native-firebase/admob rewardedAd.load()第二次不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆