AdMob RewardBasedVideoAd,奖励视频关闭后应用程序崩溃(Unity3dd,Android)
AdMob RewardBasedVideoAd, App crash after reward video closed (Unity3dd, Android)
我正在开发一款 Android 游戏,我想将 AdMob 广告添加到我的游戏中。我已经添加了横幅和插屏视图,但是 RewardBasedVideoAd 中的问题特别是在 OnAdRewarded 事件上,当用户关闭视频 return 到游戏以获得他的奖励游戏立即崩溃。
经过多次尝试,我发现了导致游戏崩溃的代码,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;
}
任何有此问题的人
问题的原因是TextMesh Pro包
只需卸载它。
我遇到了同样的问题,在我的情况下,我正在更改 UI 并在 OnAdClosed 和 OnRewardEarned 之后向服务器发送请求,因此当我关闭广告时发生崩溃。
我认为原因是这些更改实际上在返回应用程序之前应用,并且在那个时候应用程序已暂停。所以我通过使用 bool 来修复它,知道如果调用 OnAdClosed 和 OnRewardEarned 然后更改 UI 并在 OnApplicationPause 函数中发送请求,如下面的代码。
注意:我在 OnAdClosed 和 OnRewardEarned 中发送分析事件,它们工作正常,没有任何问题或崩溃。
private void OnApplicationPause(bool isPaused)
{
if (!isPaused)
{
if (_isRewardEarned)
{
_onEarnedRewardEvent?.Invoke();
}
if (_isRewardedAdClosed)
{
_onRewardedAdClosedEvent?.Invoke();
InitializeNextRewardedAd();
}
}
}
我正在开发一款 Android 游戏,我想将 AdMob 广告添加到我的游戏中。我已经添加了横幅和插屏视图,但是 RewardBasedVideoAd 中的问题特别是在 OnAdRewarded 事件上,当用户关闭视频 return 到游戏以获得他的奖励游戏立即崩溃。
经过多次尝试,我发现了导致游戏崩溃的代码,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;
}
任何有此问题的人
问题的原因是TextMesh Pro包
只需卸载它。
我遇到了同样的问题,在我的情况下,我正在更改 UI 并在 OnAdClosed 和 OnRewardEarned 之后向服务器发送请求,因此当我关闭广告时发生崩溃。
我认为原因是这些更改实际上在返回应用程序之前应用,并且在那个时候应用程序已暂停。所以我通过使用 bool 来修复它,知道如果调用 OnAdClosed 和 OnRewardEarned 然后更改 UI 并在 OnApplicationPause 函数中发送请求,如下面的代码。
注意:我在 OnAdClosed 和 OnRewardEarned 中发送分析事件,它们工作正常,没有任何问题或崩溃。
private void OnApplicationPause(bool isPaused)
{
if (!isPaused)
{
if (_isRewardEarned)
{
_onEarnedRewardEvent?.Invoke();
}
if (_isRewardedAdClosed)
{
_onRewardedAdClosedEvent?.Invoke();
InitializeNextRewardedAd();
}
}
}