回答我的第一、第二、第三个问题:
1号这是我的设置,我有 headerView 内的bannerView https://stackoverflow.com/a/57404928/4833705这似乎是完全没问题 https://ads-developers.googleblog.com/2012/03/embedding-google-admob-ads-within.html?m=1。我也在使用TabBarController
。顺便说一句,collectionView所在的vc处理bannerView
and load(GADRequest())
。 headerView 仅显示广告,因此我不必担心它在用户滚动时不断被调用并且 headerView 被回收。您可以阅读我的设置中的链接以了解更多详细信息。
第二个 AdMob 的 BannerView 有一个委托方法 https://developers.google.com/admob/ios/banner当收到新广告时会调用该函数:
MyController: GADBannerViewDelegate {
/// Tells the delegate an ad request loaded an ad.
func adViewDidReceiveAd(_ bannerView: GADBannerView) {
print("adViewDidReceiveAd")
}
}
第三。我在该打印语句上放置了一个断点以查看会发生什么,以下是结果。
当我让 headerView 可见(没有将其滚动出场景)时,委托方法每 60 秒触发一次。我可能会晚几秒钟,因为我查看了计算机上的时间并且没有使用计时器。不管怎样,几乎每 60 秒就会遇到断点并且测试广告就会改变。
一旦我将 headerView 滚动出场景并等待断点就永远不会被命中,这意味着委托方法从未被调用。我等了 10 分钟,什么也没发生——没有广告投放。
当我将 headerView 滚动回场景时,我等待了几秒钟,最终命中断点,这意味着调用了委托。就像第一个场景一样,此后每 60 秒就会受到攻击。
我切换到另一个选项卡,离开了几分钟,并且发生了#2 中相同的事情,没有到达断点,因为没有调用委托。
当我返回带有标题视图的选项卡时,#3 中发生了同样的事情,每 60 秒就会命中断点,因为调用了委托。
我进入后台,再次像 #2 一样,断点没有被击中,因为委托没有被调用。
当我从后台返回时,就像 #3 一样,每 60 秒就会触发一次断点,因为委托被调用了。
我的结论是横幅视图绝对知道当它不在现场时。无论选项卡是否更改,应用程序都会转到后台(可能使用通知),最神秘的是,它甚至知道它何时是另一个视图的子视图,并且该视图在场景上滚动/滚动。
我在纽约布朗克斯,现在是早上 8 点(我在早上 7 点左右开始测试),广告基本上每 60 秒更换一次。也许在世界其他地方,一天中的不同时间,或一年中的不同时间,持续时间可能更长或更短?
据我现在所知,我认为最好让 Google 监控load(GADRequest())
并在准备好后更改广告。每 60 秒更换一次广告对我来说没问题。如果场景可以吸引用户注意力超过一分钟,则投放 2 个广告。这更有益,因为我可以花更多的时间来吸引他们的注意力,而不是专注于向他们提供广告。
就我的问题中处理所有问题的代码而言off在这种情况下,bannerView 似乎能够自行处理所有这些问题。我需要维护和处理的代码更少,更重要的是,这减少了我担心因处理不当而被禁止的理由。
总结(这最适合我)
让 Google 处理/监控bannerView.load(GADRequest())
投放新闻广告
不要自定义刷新,它似乎每 60 秒自行更改一次
当使用bannerView时(并且可能让Google监控load(GADRequest()))
屏幕亮起时不会请求广告off所以不需要浪费时间担心它
回答我的第四个问题:
打开应用程序刷新的获利页面似乎不再存在。登录 AdMob 后,请按照以下 5 个步骤操作(在第 2 步中点击蓝色广告单元名称后,将出现一个新屏幕,显示第 3、4 和 5 步)。