gpt4 book ai didi

ios - AdMob 刷新请求

转载 作者:搜寻专家 更新时间:2023-10-31 22:36:47 24 4
gpt4 key购买 nike

我有几个问题让我感到困惑:

  • 谁最负责广告刷新?在我加载请求 bannerView.load(GADRequest()) 后,让开发人员或 Google 监控它是最佳做法吗?
  • 刷新时间应该短至 30 秒还是至少 60 秒?他们推荐 60 秒,但让您可以选择 30 秒,这似乎很奇怪。我在不同的帖子中读到过,您可能会因各种事情受到处罚,而且您的 AdMob 帐户将被关闭,不会有任何问题。如果是这种情况,如果您在控制台内选择 30 秒,而他们推荐 60 秒,如果他们觉得有任何“有趣”,他们可以仅根据这一点终止您的帐户。这是一个非常曲折的过程。
  • 它说 如果您的应用程序自动刷新广告,请确保在屏幕关闭时不会发出广告请求 。如果我的第一个问题的答案是让谷歌监控/自动刷新(不使用我下面的代码)谷歌如何知道屏幕是否关闭?例如,广告显示在 viewControllerA 中,但用户按下按钮并按下 viewControllerB。由于 viewControllerA 仍在堆栈中,广告将不断刷新,因此在 viewControllerA 被释放之前,我不知道 Google 如何知道屏幕已关闭。另外,如果用户进入后台,Google 怎么知道?我假设 关闭 意味着用户无法再看到屏幕,这意味着他们无法看到广告,因此无需刷新,因为他们要么切换了标签页,推送了另一个 VC,要么转到了后台(所有情况下)在下面的代码中处理)
  • 刷新控制台页面的链接在哪里?在您转到 https://apps.admob.com > Monetize 之前,您最终会出现在带有刷新选项的页面上。当我登录时,我不再看到货币化选项,而是看到带有一堆图标的侧边栏。没有任何图标将我带到刷新页面。仅供引用,我昨天刚开始使用 AdMob,我只在视频和在线教程中看到刷新页面,所以我以前从未使用过它。

  • enter image description here

    它说 here(强调我的):

    Refreshing ads

    We recommend that you have ads persist for 60 seconds or longer, depending on the functionality of your app. Our internal tests have shown that this ensures users have enough time to engage with ads, providing the best performance for both advertisers and publishers. Furthermore, these tests have shown that refreshing ads more often can hurt fill rate for our publishers.

    If your app is automatically refreshing ads, make sure ad requests are not made when the screen is off. Also, if users navigate to and from pages with ads in an app over a short period of time, a new ad request should not be made sooner than the recommended 60 second rate.



    但它也说 here :

    Banner ads

    We recommend using the Google-optimized automatic refresh rate. The optimized rate is calculated using AdMob historical data to ensure the ads shown in your ad units are being refreshed at the best rate for banner ads.

    You may also set a custom refresh rate of 30-120 seconds or disable refresh rate completely.



    这是我每 30 秒自己管理一次请求的方法,考虑到用户何时进入后台、切换选项卡或插入另一个 VC。如果我不做所有这些并将其留给他们(“我们建议使用谷歌优化的自动刷新率”),谷歌如何知道屏幕是否关闭?
    var timer: Timer?

    override viewDidLoad() {
    super.viewDidLoad()

    // instantiate bannerView ...

    NotificationCenter.default.addObserver(self, selector: #selector(startAdRefreshTimer), name: UIApplication.willEnterForegroundNotification, object: nil)

    // *** the screen is OFF
    NotificationCenter.default.addObserver(self, selector: #selector(stopAdRefreshTimer), name: UIApplication.willResignActiveNotification, object: nil)
    }

    override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    startAdRefreshTimer()
    }

    // *** the screen is OFF
    override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    stopAdRefreshTimer()
    }

    @objc func startAdRefreshTimer() {

    timer?.invalidate()
    timer = Timer.scheduledTimer(withTimeInterval: 30,
    repeats: true,
    block: { [weak self](timer) in
    self?.refreshAd()
    })
    }

    func refreshAd() {

    bannerView.load(GADRequest())
    }


    @objc func stopAdRefreshTimer() {
    if timer != nil {
    timer?.invalidate()
    timer = nil
    }
    }

    // this really isn't necessary because of what's in viewWillDisappear but I added it anyway
    @objc func buttonToPushNextVCTapped() {

    let nextVC = NextVC()
    navigationController?.pushViewController(viewController: nextVC, animated: true, completion: { [weak self] in

    // *** the screen is OFF
    self?.stopAdRefreshTimer()
    })
    }

    这不是完美的解决方案,因为如果用户快速和重复地来回切换标签,请求将在 30 秒内发生,这可能会导致您的帐户被禁止。这仅用于示例目的。

    最佳答案

    回答我的第一、第二和第三个问题:

    第一个这是我的 setup, I have the bannerView inside a headerView 似乎是 totally fine 。我也在使用 TabBarController 。顺便说一句, collectionView 所在的 vc 处理 bannerViewload(GADRequest()) 。 headerView 只显示广告,所以我不必担心它会随着用户滚动和 headerView 被回收而不断被调用。您可以阅读我的设置中的链接以获取更多详细信息。

    第二个 AdMob 的 BannerView 有一个 delegate method,它在收到新广告时被调用:

    MyController: GADBannerViewDelegate {

    /// Tells the delegate an ad request loaded an ad.
    func adViewDidReceiveAd(_ bannerView: GADBannerView) {
    print("adViewDidReceiveAd")
    }
    }

    第三。我在该打印语句上放置了一个断点以查看会发生什么,这是结果。
  • 当我让 headerView 可见(没有将它从场景中滚动)时,委托(delegate)方法每 60 秒触发一次。我可能会差几秒钟,因为我查看了计算机上的时间并且没有使用计时器。无论如何,几乎每 60 秒就会触发一次断点并更改测试广告。
  • 一旦我从场景中滚动 headerView 并等待断点从未被命中,这意味着从未调用过委托(delegate)方法。我等了 10 分钟,什么也没发生——没有转换广告。
  • 一旦我将 headerView 滚动回场景,我等了几秒钟,最终命中了断点,这意味着调用了委托(delegate)。就像在第一个场景中一样,此后每 60 秒就会被击中一次。
  • 我切换到一个不同的选项卡,离开了几分钟,在#2 中发生了同样的事情,因为没有调用委托(delegate),所以没有命中断点。
  • 当我回到带有 headerView 的选项卡时,#3 中发生了同样的事情,因为调用了委托(delegate),所以每 60 秒就会命中一次断点。
  • 我去了后台,再次像#2 一样没有命中断点,因为没有调用委托(delegate)。
  • 一旦我像#3 这样从后台回来,断点每 60 秒就会被击中一次,因为委托(delegate)被调用了。

  • 我的结论是,当 横幅 View 不在现场时,它绝对知道 。无论选项卡是否更改,应用程序都会转到后台(可能使用通知),最神秘的是它甚至知道它何时是另一个 View 的 subview ,并且该 View 在场景上滚动/滚动。

    我在纽约布朗克斯,现在是早上 8 点(我在早上 7 点左右开始测试),广告基本上每 60 秒更改一次。也许在世界其他地方,一天中的不同时间或一年中的不同时间,持续时间可能更长或更短?

    知道我现在所知道的,我认为最好让 Google 监控 load(GADRequest()) 并在它准备好时更改广告。每 60 年代更换一次广告对我来说很好。如果场景可以吸引用户的注意力超过一分钟,那就是转换了 2 个广告。这更有益,因为我可以花更多时间来吸引他们的注意力,而不是专注于为他们提供广告。

    就我的问题中处理所有 off 案例的代码而言,bannerView 似乎能够自行处理所有这些。我需要维护和处理的代码更少,更重要的是,担心因处理不当而被禁止的理由更少。

    总而言之(这对我来说最有效)
  • 让 Google 处理/监控 bannerView.load(GADRequest()) 以转换新闻广告
  • 不自定义刷新,它似乎每 60 秒自行更改一次
  • 使用横幅 View 时(并且可能让 Google 监视 load(GADRequest())) 广告,当屏幕为 关闭 时,不需要浪费时间担心它

  • 回答我的第四个问题:

    用于打开 App Refresh 的货币化页面似乎不再存在。登录 AdMob 后,请按照以下 5 个步骤操作(在第 2 步中点击蓝色广告单元名称后,将出现第 3、4 和 5 步的新屏幕)。

    enter image description here

    enter image description here

    enter image description here

    关于ios - AdMob 刷新请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57412813/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com