【发布时间】:2021-04-14 02:17:06
【问题描述】:
我正在将GADRewardedInterstitialAd 应用到游戏中。
https://developers.google.com/admob/ios/api/reference/Classes/GADRewardedInterstitialAd
我正在使用presentFromRootViewController:userDidEarnRewardHandler 对完成广告的用户做出反应。
现在我也想知道如何对用户取消广告做出反应。
如果我在调用 presentFromRootViewController 后直接继续,回调处理程序将不会被调用,因为系统异步工作,正如预期的那样。因此,任何游戏动画(例如屏幕淡入淡出、对话框关闭)都必须停止。
如果我只依赖处理程序,我将不会在广告被取消时收到回调。
我的解决方案是构建一个等待 30+1 秒的计时器,让处理程序有机会被调用(希望在下一个主线程调度周期),然后对它尚未被调用做出反应(假设取消由用户)。 我真的很讨厌那个计划。
- 这不是确定性的。
- 它不使用回调/委托/处理程序(这对于这类事情来说非常棒)
- 我必须编写计时器代码并在某处保留一个布尔标志......这很乱。
- 它会在用户关闭广告时给用户体验添加任意延迟(30+1 秒)!!
我是不是想错了,还是这就是 Google 的做法,我必须忍受它?
编辑:请注意,我说的是新的 GADRewardedInterstitialAd API,而不是 GADRewardedAd。
【问题讨论】:
标签: ios objective-c asynccallback admob-rewardedvideoad