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 开始或类似的事情。
我在我的设备上对广告进行了一些测试,然后使用生产单元 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 开始或类似的事情。