【问题标题】:AdMob RewardBasedVideoAd, App crash after reward video closed (Unity3dd, Android)AdMob RewardBasedVideoAd,奖励视频关闭后应用崩溃(Unity3dd,Android)
【发布时间】:2020-01-10 01:12:55
【问题描述】:

我正在开发一款 Android 游戏,我想将 AdMob 广告添加到我的游戏中。我添加了横幅和插页式视图,但 RewardBasedVideoAd 中的问题特别是 OnAdRewarded 事件,当用户关闭视频时返回游戏以立即获得奖励游戏崩溃。

经过多次尝试,我发现导致游戏崩溃的代码gameObject.SetActive(true)gameObject.SetActive(false)是问题所在,当我停用游戏面板UI和激活奖励面板UI时游戏立即崩溃。

我该如何解决?为什么我使用 gameObject.SetActive 时游戏会崩溃?

导致应用崩溃的代码

public void HandleOnAdRewarded(object sender, EventArgs args)
{
   gamePanel.SetActive(false);
   rewardPanel.SetActive(true);
}

申请奖励码

public void RequestReward()
{
   AdRequest request = new AdRequest().Builder().Build();
   this.rewardAd.LoadAd(request, rewardAdId);

   rewardAd.OnAdLoaded += this.HandleOnRewardAdLoaded;
   rewardAd.OnAdRewarded += this.HandleOnAdRewarded;
   rewardAd.OnAdClosed += this.HandleOnRewardAdClosed;
}

处理程序

public void HandleOnRewardAdLoaded(object sender, EventArgs args)
{
   if(rewardAd.IsLoaded())
   {
       rewardAd.Show();
   }
}

public void HandleOnAdRewarded(object sender, EventArgs args)
{
    gamePanel.SetActive(false);
    rewardPanel.SetActive(true);
}

public HandleOnRewardAdClosed(object sender, EventArgs args)
{
    rewardAd.OnAdLoaded -= this.HandleOnRewardAdLoaded;
    rewardAd.OnAdRewarded -= this.HandleOnAdRewarded;
    rewardAd.OnAdClosed -= this.HandleOnRewardAdClosed;
}

【问题讨论】:

    标签: android unity3d admob ads


    【解决方案1】:

    任何人都有这个问题

    问题的原因是TextMesh Pro

    只需卸载它

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,在我的情况下,我在 OnAdClosed 和 OnRewardEarned 之后更改 UI 并向服务器发送请求,因此当我关闭广告时发生崩溃。

      我认为原因是这些更改实际上是在返回应用程序之前应用的,并且在那段时间应用程序处于暂停状态。所以我通过使用 bool 来修复它,以知道如果调用 OnAdClosed 和 OnRewardEarned 然后更改 UI 并在 OnApplicationPause 函数中发送请求,如下面的代码。

      注意:我在 OnAdClosed 和 OnRewardEarned 中发送分析事件,它们工作正常,没有任何问题或崩溃。

          private void OnApplicationPause(bool isPaused)
          {
              if (!isPaused)
              {
                  if (_isRewardEarned)
                  {
                      _onEarnedRewardEvent?.Invoke();
                  }
                  if (_isRewardedAdClosed)
                  {
                      _onRewardedAdClosedEvent?.Invoke();
                      InitializeNextRewardedAd();
                  }
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-28
        • 2019-08-02
        • 1970-01-01
        相关资源
        最近更新 更多