Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ad request successful, but no ad returned due to lack of ad inventory

Tags:

android

admob

I new in AdMob. At first I'm trying to create a test app with different types of ad. I use real ad_unit_id and nexus 4 for testing.

I use 1 layout xml for all activity:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:id="@+id/empty_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
</LinearLayout>

When i create simple activity with banner ad it's work fine. Activity code:

public class AdBannerActivity extends Activity {

    private AdView adView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ad_empty);

        adView = new AdView(this, AdSize.SMART_BANNER, getString(R.string.adUnitId));
        adView.setAdListener(this);

        LinearLayout layout = (LinearLayout) findViewById(R.id.empty_layout);

        layout.addView(adView);

        adView.loadAd(new AdRequest());
    }

    @Override
    public void onDestroy() {
        if (adView != null) {
            adView.destroy();
        }
        super.onDestroy();
    }
}

When i try to create activity with full screen ad, i have error message:

Ad request successful, but no ad returned due to lack of ad inventory.

Activity code:

public class AdInterstitialActivity extends Activity implements AdListener {

    private InterstitialAd interstitial;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ad_empty);

        interstitial = new InterstitialAd(this, getString(R.string.adUnitId));

        interstitial.setAdListener(this);

        AdRequest adRequest = new AdRequest();

        interstitial.loadAd(adRequest);
    }

    @Override
    public void onReceiveAd(Ad ad) {
        if (ad == interstitial) {
            interstitial.show();
        }
    }

    @Override
    public void onDismissScreen(Ad ad) {
    }

    @Override
    public void onFailedToReceiveAd(Ad ad, ErrorCode error) {
        Log.e("AdTest", "Error code: " + error);
    }

    @Override
    public void onLeaveApplication(Ad ad) {
    }

    @Override
    public void onPresentScreen(Ad ad) {
    }
}

What am I doing wrong? How to solve this problem?

Solution: Create new ad_unit_id for interstitial ads in AdMob account.

like image 989
Drafff Avatar asked Mar 20 '23 22:03

Drafff


1 Answers

If your have that error, then your code is correct. Admob just doesn't have any ads to display for your app (your country, your type of ads are determinants).

If you want to test the behavior of your ads in test mode, you should take a look at this link :

https://developers.google.com/mobile-ads-sdk/docs/admob/additional-controls#testmode

EDIT : If you have just created your Admob account, it may take some times and some requests to deliver the first ads. I saw somewhere that people had this error too by using custom size for banner, so be sure to check :

https://developers.google.com/mobile-ads-sdk/docs/admob/intermediate#play

like image 69
Andros Avatar answered Apr 08 '23 17:04

Andros