问题
TL;DR: My interstitial ads are successfully loading, but when I call .show()
on them, they don't show up!
I have followed these directions, and the ads load succesfully, but don't show when I call mInterstitialAd.show();
:
In onCreate():
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("My ID");
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
requestNewInterstitial();
beginPlayingGame();
}
});
requestNewInterstitial();
requestNewInterstitial()
:
private void requestNewInterstitial() {
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice("Phone's ID")
.build();
mInterstitialAd.loadAd(adRequest);
}
HERE IS THE PROBLEM:
public void tryAgain(View v) {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
Log.v(TAG, "LOADED in Game Over!");
}
else {
beginPlayingGame();
}
beginPlayingGame();
}
I get the log saying it is loaded in my log cat, but the ad doesn't actually show! Why is it loading, but not showing?
P.S. I think I actually got it to work once earlier, but it stopped working ever since then. What could be the problem?
回答1:
Please add .addTestDevice("SEE_YOUR_LOGCAT_TO_GET_YOUR_DEVICE_ID")
to your AdRequestBuilder
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice("SEE_YOUR_LOGCAT_TO_GET_YOUR_DEVICE_ID")
.build();
Because in development step, if you made too many request on AdMob sometimes it starts to not showing ads. So on development process work with test ads. If it is work without any problem, when you publish your app on Play Store, your users also will see your ads without any problem
回答2:
It turns out that I just had to remove the extra method call after the else. For example,
public void tryAgain(View v) {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
Log.v(TAG, "LOADED in Game Over!");
}
else {
beginPlayingGame();
}
beginPlayingGame();
}
should have just been
public void tryAgain(View v) {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
Log.v(TAG, "LOADED in Game Over!");
}
else {
beginPlayingGame();
}
//NOTICE THERE Is NO EXTRA METHOD CALL OF **beginPlayingGame()**
}
回答3:
Try this code
MobileAds.initialize(this, getString(R.string.admob_app_id));
private InterstitialAd mInterstitialAd;
mInterstitialAd = new InterstitialAd(this);
// set the ad unit ID
mInterstitialAd.setAdUnitId(getString(R.string.interstitial_full_screen));
loadInterstitialAds(mInterstitialAd);
//Create loadInterstitialAds method
public void loadInterstitialAds(final InterstitialAd mInterstitialAd) {
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
// Check the LogCat to get your test device ID
.addTestDevice("Phone's ID")
.build();
// Load ads into Interstitial Ads
mInterstitialAd.loadAd(adRequest);
mInterstitialAd.setAdListener(new AdListener() {
public void onAdLoaded() {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
}
}
});
}
来源:https://stackoverflow.com/questions/36389729/ads-are-loading-but-not-showing