我已经实施了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();
}
如果广告由于没有互联网连接而成功加载或失败(errorCode 2),它仍然会被刷新:
我/广告:从现在起安排广告刷新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();
}
有趣的是,在经过大量测试后,在mAdView.loadAd(adRequestBuilder.build())
强制重新加载广告后调用No fill from ad server. Failed to load ad: 3
(我收到消息:Starting ad request.
)但它从未成功完成。我仍然得到No fill from ad server. Failed to load ad: 3
。响应很快。我假设它来自某种本地缓存。
答案 0 :(得分:0)
已解决
问题是,如果您没有创建 app-ads.txt 文件并将其放置在可访问的域中,AdMob 将不会为您的应用 AdRequest 提供服务。
要解决此问题,请按照以下步骤操作: