Android 谷歌广告是如何在安卓系统上显示的?

Android 谷歌广告是如何在安卓系统上显示的?,android,admob,ads,Android,Admob,Ads,我在我的设备上用广告做了一些测试,然后用生产单元ID将应用程序推到了游戏中。过了一段时间,当版本在游戏中可用时,我从我的设备上删除了调试版本,并从中安装 代码与建议的代码相同 但令人惊讶的是,我在日志中看到了以下内容 2:38.743 16617-16617/com.osfg.tictactoe I/Ads﹕ 正在启动广告请求。 06-17 18:22:38.743 16617-16617/com.osfg.tictactoe I/Ads﹕ 使用addRequest.Builder.addTes

我在我的设备上用广告做了一些测试,然后用生产单元ID将应用程序推到了游戏中。过了一段时间,当版本在游戏中可用时,我从我的设备上删除了调试版本,并从中安装

代码与建议的代码相同

但令人惊讶的是,我在日志中看到了以下内容

2:38.743 16617-16617/com.osfg.tictactoe I/Ads﹕ 正在启动广告请求。 06-17 18:22:38.743 16617-16617/com.osfg.tictactoe I/Ads﹕ 使用addRequest.Builder.addTestDevice(“235F7FAA8F49FF2CAA1DD2FAFE6B9E8A”)获取此设备上的测试广告。 06-17 18:22:40.529 16617-16617/com.osfg.tictactoe I/gameplayonclicklinklistener﹕ 比赛结束了。有人赢了 06-17 18:22:43.551 16617-16617/com.osfg.tictactoe I/GamePlayOnClickListener﹕ 无法加载填隙添加 06-17 18:22:43.551 16617-16617/com.osfg.tictactoe I/GamePlayOnClickListener﹕ 重置游戏


它仍然使用我的设备作为测试设备?不知道这里发生了什么。有人有过这方面的经验吗?我知道它会计算哈希值,但它会将其存储在admob服务器上,但这也是客户端调用。它怎么知道?我很困惑。非常感谢您的建议。

您遇到此问题的原因很可能是
minterstitalad.loadAd(adRequest)
正在调用后台线程以加载新广告,但您正在检查该广告是否已立即加载。你不会给后台线程一个连接到服务器、获取广告等的机会

要解决此问题,您需要将广告加载到
AdListener
中时的代码,如下所示:

mInterstitialAd.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
        Log.i(TAG," Interstitial Add :Loaded");
    }
    @Override
    public void onAdFailedToLoad(int error) {
        Log.i(TAG,"Could not load Interstitial Add");
    }
}
mInterstitialAd.loadAd(adRequest);

if语句
if(minterstitalad.isLoaded())
用于稍后检查广告是否已加载,例如在用户执行某些操作之后。不是在活动开始或任何类似的时候。

Joseph在调用
loadAd()
后立即调用
interstitual.show()
时,您完全正确地解释了为什么他会出错。但是告诉人们从
onAdLoaded()
调用
interstitual.show()
,他们的帐户将被禁止,正如Admob多次说过的那样。@Joseph和@Willam感谢您提供的信息。但我的问题是,为什么从play store下载的应用程序的日志中会显示
addTestDevice
,并带有生产添加单元id。@AniketThakur我可能弄错了,但在任何设备上都可能会这样说。如果你要测试你的应用程序,你必须使用测试广告,如果你不这样做,你的Admob帐户将被禁止。这就是为什么您会看到这条消息,因为Admob需要为您提供在任何设备上请求测试广告的能力。因此,我相信无论您在什么设备上运行,您的或其他人的,real或emulator,您都会在日志中看到该消息,因为任何设备都可以用于测试。这有意义吗?不,我正在使用生产添加单元it,正如admob所说,此单元id用于生产,使用它进行测试可能会导致阻塞您的帐户。考虑到我从play store下载并打开了应用程序,我在日志中看到了上面的内容。我所期望的是,adds应该没有测试设备(考虑到它是从play store下载的)。@AniketThakur只有一种admob广告单元id,您可以自己创建。您可以使用任何ad单元id获取测试广告,方法是包括行
AdRequest.Builder.addTestDevice(“此处的设备id”)
。只要你在你的应用程序中看到了真实的广告,你做的一切都是正确的。无论你做什么,你总是会在你的日志中看到这条消息。
mInterstitialAd.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
        Log.i(TAG," Interstitial Add :Loaded");
    }
    @Override
    public void onAdFailedToLoad(int error) {
        Log.i(TAG,"Could not load Interstitial Add");
    }
}
mInterstitialAd.loadAd(adRequest);