微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

奖励插页式广告 - 如何对取消广告的用户做出反应? AdMob Google Ads,iOS

如何解决奖励插页式广告 - 如何对取消广告的用户做出反应? AdMob Google Ads,iOS

我正在将 GADRewardedInterstitialAd 实现到游戏中。

https://developers.google.com/admob/ios/api/reference/Classes/GADRewardedInterstitialAd

我使用 presentFromrootViewController:userDidEarnRewardHandler 对完成广告的用户做出反应。 现在我想知道如何对取消广告的用户做出反应。

如果我在调用 presentFromrootViewController 后直接继续,回调处理程序将不会被调用,因为系统是异步的,正如预期的那样。因此,任何游戏动画(例如屏幕淡入淡出、对话框关闭)都必须停止。

如果我只依赖处理程序,当广告被取消时我不会收到回调。

我的解决方案是建立一个等待 30+1 秒的计时器,让处理程序有机会被调用(希望在下一个主线程调度周期),然后对尚未被调用的它做出反应(假设取消由用户)。 我真的很讨厌那个计划。

  1. 这不是确定性的。
  2. 它不使用回调/委托/处理程序(这非常适合这种事情)
  3. 我必须编写计时器代码并在某处保留一个布尔标志......这很混乱。
  4. 用户关闭广告时,它会为用户体验增加任意延迟(30+1 秒)!

我是否对此有错误的看法,还是这只是 Google 的做法,我将不得不接受它?

编辑:请注意,我说的是新的 GADRewardedInterstitialAd API,而不是 GADRewardedAd

解决方法

我已经想通了;它通过设置 GADFullScreenContentDelegate fullScreenContentDelegate 并实现 adDidDismissFullScreenContent 来工作。

在那里你可以检查这个特定的 GADRewardedInterstitialAd 实例是否还没有得到奖励(如 userDidEarnRewardHandler... 所通知的)

这一切都取决于 adDidDismissFullScreenContentuserDidEarnRewardHandler 之后被调用的断言,否则我已经假设没有奖励。让我们希望永远如此。

https://developers.google.com/ad-manager/mobile-ads-sdk/ios/api/reference/Protocols/GADFullScreenContentDelegate

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。