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