【问题标题】:Rewarded Interstitials - How to react to a user cancelling an Ad? (AdMob Google Ads, iOS)奖励插页式广告 - 如何对用户取消广告做出反应? (AdMob 谷歌广告,iOS)
【发布时间】:2021-04-14 02:17:06
【问题描述】:

我正在将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

【问题讨论】:

    标签: ios objective-c asynccallback admob-rewardedvideoad


    【解决方案1】:

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

    在那里,您可以检查GADRewardedInterstitialAd 的特定实例是否尚未获得奖励(由userDidEarnRewardHandler 通知...)

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

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

    【讨论】:

      猜你喜欢
      • 2019-12-17
      • 2022-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      相关资源
      最近更新 更多