[英]Admob runtime issue - Unity / iOS Build - Rewarded Ad runs once / 2nd run causing issues
希望有人可以帮助我解决这个异常!
因此,这里有一些背景信息:我使用的是当玩家死亡时触发的奖励广告。 这会加载一个“ rewardAd”弹出窗口,供玩家选择观看视频以获取奖励或关闭请求,然后游戏结束。 在游戏的初始运行中,它可以完美运行。 奖励是获得额外的生命并继续玩游戏。 这也很好。
但是...当玩家第二次死亡时,将显示“ rewardAd”弹出窗口,但是当单击“播放广告”按钮时,弹出窗口消失,从而使游戏处于暂停状态...从此处开始,暂停按钮仍显示在屏幕上的按钮处于活动状态,单击该按钮将弹出“暂停”弹出菜单。 如果单击恢复游戏按钮,则将再次显示“ rewardAd”弹出窗口。如果这次单击“播放广告”按钮,则广告将再次运行。
因此,似乎该问题将在玩家第一次死亡时播放广告,但第二次只会使游戏处于暂停状态...除非您按下暂停按钮以调出“暂停”弹出菜单,然后继续从该菜单中再次弹出“ rewardAd”弹出窗口,然后这次广告确实加载并再次投放,并且一切正常。
所以我的问题是,为什么我第二次死亡时视频广告不能正确加载,除非我暂停游戏(处于已经暂停的状态)然后继续播放并再次获得rewardAd弹出窗口,然后它将运行广告再次。
由于某种原因,它仅在重新触发两次“ rewardAd”弹出窗口时才重新加载视频广告。
这是我的代码:
在播放器类中:
void fixedUpdate () {
if (health == 0) {
helthSprite.fillAmount = 0f;
GameObject.Find ("RewardAdPopup").GetComponent<TweenAlpha> ().PlayForward ();
GeneralScript.instance.pauseGame();
}
}
现在,“ rewardAdPopup”具有两个按钮“播放”和“关闭”,这两个按钮分别在GeneralScript类中与这两个方法连接在一起:
public void showAd ()
{
isRewarded = false;
Admob.Instance ().loadRewardedVideo ("ca-app-pub-3917955116464255/1873040720");
Admob.Instance ().rewardedVideoEventHandler += onRewardVideoEvent;
if (Admob.Instance ().isRewardedVideoReady ()) {
Admob.Instance ().showRewardedVideo ();
}
}
public void adDeclined ()
{
Bird.instance.showGameOverPopup ();
}
现在,我在“开始”方法(底部)中也有“ loadVideo”实例-否则即使是第一次也不会加载视频:
void Start ()
{
instance = this;
if (Application.loadedLevelName.Equals ("GameScene")) {
InvokeRepeating ("IncreseSpeed", 0f, GameManager.MaxSpawnTime);
}
checkSound ();
Admob.Instance ().loadRewardedVideo ("ca-app-pub-3917955116464255/1873040720");
}
最后是“ onRewardVideoEventMethod”:
void onRewardVideoEvent(string eventName, string message) {
if (eventName == AdmobEvent.onAdClosed) {
print ("Ad Closed");
if (isRewarded) {
print ("ad watched");
Bird.instance.health = GameManager.curBirdHealth;
resumeGame ();
} else {
adDeclined ();
}
} else if (eventName == AdmobEvent.onRewarded) {
print ("Ad Rewarded");
isRewarded = true;
} else if (eventName == AdmobEvent.adViewWillDismissScreen) {
if (isRewarded) {
print("ad dismissed");
Bird.instance.health = GameManager.curBirdHealth;
resumeGame ();
}
}
}
我敢肯定,这个问题就在这里...可能与UI按钮脚本下Unity Inspector中“播放”按钮的“ OnClick”设置有关,但我不确定。
任何帮助将不胜感激! 这让我难过...
您的方法showAd
在这一行中有问题
public void showAd ()
{
//.....
Admob.Instance ().rewardedVideoEventHandler += onRewardVideoEvent;
//.....
}
每次播放广告时,您都会添加另一个事件处理程序。 从外观Admob.Instance
是一个单例。
Alo作为另一个建议,仅对物理使用fixedUpdate
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.