加载失败后,奖励Admob的视频失败-Unity

问题描述

自2个星期以来,我面临一个困扰我的问题。我正在尝试将奖励视频代码实施到在Unity中创建的手机游戏中。一切正常,除非有一次广告展示过程出现问题,而其他所有时间我都想展示奖励视频,但我遇到了问题。我在开始功能中请求并加载视频,并且游戏中的每个场景都将脚本附加到游戏对象上,因此我在每个场景的开头调用新的请求并加载。如果有人可以提出建议,我会很高兴,

我正在通过一个按钮调用ShowRewardAd()函数,当玩家没有生命时(该玩家一开始有3条生命),该按钮会弹出。

编辑:我认为它之所以无法展示新的干净广告,是因为我没有破坏有问题的请求。我进行了搜索,发现有人使用UnityAds通过请求Advertisement.RemoveListener(this)函数解决了该问题。我无法使用它,我相信是因为我正在尝试使用Admob广告。因此,如果有人知道如何销毁RewardVideoAds,它可能会对我有所帮助。

谢谢。这是我的脚本:

public class Rewardedvideo : MonoBehavIoUr

{

 string Video_Ad_ID = "ca-app-pub-3940256099942544/5224354917";


 private RewardedAd rewardedAd;
 public bool ready = false;
 void Start()
 {

    
     RequestRewardAd();
     
     

     
 }
 public void RequestRewardAd()
 {

     this.rewardedAd = new RewardedAd(Video_Ad_ID);
     AdRequest request = new AdRequest.Builder().Build();
     Debug.Log("request video");

     this.rewardedAd.LoadAd(request);

     Debug.Log("Loaded video");

     this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
     this.rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
    this.rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow;

     this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;

     this.rewardedAd.OnAdClosed += HandleOnRewardedAdClosed;
 }
 public void HandleRewardedAdFailedToShow(object sender,AdErrorEventArgs args)
 {
     OnDestroy();
     RequestRewardAd();
     
      
 }
 

public void HandleOnRewardedAdClosed(object sender,EventArgs args)
 {//ad closed (even if not finished watching)

     this.rewardedAd.OnAdLoaded -= HandleRewardedAdLoaded;
     rewardedAd.OnAdFailedToLoad -= this.HandleRewardedAdFailedToLoad;
   rewardedAd.OnAdFailedToShow -= this.HandleRewardedAdFailedToShow;
     rewardedAd.OnUserEarnedReward -= this.HandleUserEarnedReward;
     rewardedAd.OnAdClosed -= this.HandleOnRewardedAdClosed;
     RequestRewardAd();
     
     
     
 }
 
 public void HandleRewardedAdFailedToLoad(object sender,AdErrorEventArgs args)
 {
     ready = false;
     this.rewardedAd.OnAdLoaded -= HandleRewardedAdLoaded;
     rewardedAd.OnAdFailedToLoad -= this.HandleRewardedAdFailedToLoad;
     rewardedAd.OnAdFailedToShow -= this.HandleRewardedAdFailedToShow;
     rewardedAd.OnUserEarnedReward -= this.HandleUserEarnedReward;
     rewardedAd.OnAdClosed -= this.HandleOnRewardedAdClosed;
  
     RequestRewardAd();
    
 }
 

 public void HandleUserEarnedReward(object sender,Reward args)
 {
     
    
     SceneManager.LoadScene(SceneManager.GetActiveScene().buildindex);
 }

 public void showRewardedAd()
 {
     if (ready)
     {
         this.rewardedAd.Show();
         Debug.Log("Showed or not ?");
     }
     else
     {
          this.rewardedAd.OnAdLoaded -= HandleRewardedAdLoaded;
         rewardedAd.OnAdFailedToLoad -= this.HandleRewardedAdFailedToLoad;
         rewardedAd.OnAdFailedToShow -= this.HandleRewardedAdFailedToShow;
         rewardedAd.OnUserEarnedReward -= this.HandleUserEarnedReward;
         rewardedAd.OnAdClosed -= this.HandleOnRewardedAdClosed;
        
         RequestRewardAd();
         SceneManager.LoadScene(SceneManager.GetActiveScene().buildindex);
     }
   
 }
 public void OnDestroy()
 {
     this.rewardedAd.OnAdLoaded -= HandleRewardedAdLoaded;
     rewardedAd.OnAdFailedToLoad -= this.HandleRewardedAdFailedToLoad;
     rewardedAd.OnAdFailedToShow -= this.HandleRewardedAdFailedToShow;
     rewardedAd.OnUserEarnedReward -= this.HandleUserEarnedReward;
     rewardedAd.OnAdClosed -= this.HandleOnRewardedAdClosed;
 }

 public void HandleRewardedAdLoaded(object sender,EventArgs args)
 {
     ready = true;
 }

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)