google 广告如何在 Android 上展示?

How google ads are shown on Android?

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

代码与developer site建议的相同

mInterstitialAd = new InterstitialAd(callerActivity);
mInterstitialAd.setAdUnitId(callerActivity.getString(R.string.interstitial_ad_unit_id));
AdRequest adRequest = new AdRequest.Builder().build();
mInterstitialAd.loadAd(adRequest);
if (mInterstitialAd.isLoaded()) {
    Log.i(TAG," Interstitial Add :Loaded");
    mInterstitialAd.show();
}
else {
    Log.i(TAG,"Could not load Interstitial Add");
}

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

2:38.743 16617-16617/com.osfg.tictactoe I/Ads﹕ Starting ad request. 06-17 18:22:38.743 16617-16617/com.osfg.tictactoe I/Ads﹕ Use AdRequest.Builder.addTestDevice("235F7FAA8F49FF2CAA1DD2FAFE6B9E8A") to get test ads on this device. 06-17 18:22:40.529 16617-16617/com.osfg.tictactoe I/GamePlayOnClickListener﹕ Game Over. Some player won 06-17 18:22:43.551 16617-16617/com.osfg.tictactoe I/GamePlayOnClickListener﹕ Could not load Interstitial Add 06-17 18:22:43.551 16617-16617/com.osfg.tictactoe I/GamePlayOnClickListener﹕ Resetting game

它还在用我的设备作为测试设备?不确定这里发生了什么。任何人都有这方面的经验吗?我知道它计算哈希值,但它是否将其存储在 admob 服务器上,但这又是客户端调用。它怎么会知道?我很迷惑。任何建议表示赞赏。

很可能您遇到此问题是因为 mInterstitialAd.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 (mInterstitialAd.isLoaded()) 用于稍后检查广告是否已加载,例如在用户执行某些操作后。不是 activity 开始或类似的事情。