【发布时间】:2018-08-02 07:14:11
【问题描述】:
我已经在exampe 中实施了 Firebase 广告:
@Override
public void onCreate(Bundle savedInstanceState) {
(...)
mAdView.loadAd(adRequestBuilder.build());
}
@Override
public void onResume() {
mAdView.resume();
}
@Override
public void onPause() {
mAdView.pause();
}
@Override
public void onDestroy() {
mAdView.destroy();
}
如果广告由于没有互联网连接而成功加载或失败(错误代码 2),它仍然会被刷新:
I/Ads:计划从现在起 60000 毫秒后刷新广告。
当我们进入后台然后进入前台时,我们得到的信息相同(mAdView.resume(),mAdView.pause())。
但如果我们得到“没有填充”
没有来自广告服务器的填充。广告加载失败:3
firebase 停止请求新广告。这意味着用户不会看到任何新广告(如果第一个请求以“无填充”结束,则甚至不会看到第一个广告)。此外,如果应用程序进入后台然后进入前台(正在调用mAdView.resume()),广告请求仍然不会执行。 这意味着“没有填充”的用户可以很长时间看不到广告。那会降低我的收入。
这是广告库的正确行为还是错误?如何解决这个问题?
更新
我有一个想法。将 mAdView.loadAd(adRequestBuilder.build()) 从 onCreate() 移动到 onResume() 方法会在用户从后台返回时强制重新加载广告。
@Override
public void onResume() {
if (!mAdView.isLoading())
mAdView.loadAd(adRequestBuilder.build());
mAdView.resume();
}
有趣的是,经过大量测试,在No fill from ad server. Failed to load ad: 3 之后调用mAdView.loadAd(adRequestBuilder.build()) 会强制重新加载广告(我收到消息:Starting ad request.)但它从未成功完成。我仍然得到No fill from ad server. Failed to load ad: 3。而且反应非常快。我假设它来自某种本地缓存。
【问题讨论】:
-
我在文档中找不到它,但我认为它停止刷新请求是合乎逻辑的。没有填充意味着没有广告可用,这意味着新广告必须由广告商添加,因此为避免不必要的网络连接/后台作业等,刷新停止。最好通过 groups.google.com/forum/#!forum/google-admob-ads-sdk 向 Admob 团队询问
-
但是如果我正确理解它的工作原理,遇到“无填充”错误的用户将来不会看到广告,即使广告客户添加了新广告。而且我不认为发送简单的错误消息会给网络带来巨大的负担。