128

I'm setting an ad to my Android application using DoubleClick and can't manage to show the final ad, can someone help me?

When I test an ad by adding ".addTestDevice("xxx...")" I get the test ad but when I remove this line I get the following error :

W/Ads: No fill from ad server

W/Ads: Failed to load ad: 3

I set my ad like this :

PublisherAdRequest adRequest = new PublisherAdRequest.Builder().build();
mPublisherAdView.loadAd(adRequest);

And my publisherView look like this :

    <com.google.android.gms.ads.doubleclick.PublisherAdView
        android:id="@+id/pronostics_ad"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:layout_gravity="center"

        ads:adSize="BANNER"
        ads:adUnitId="@string/ad_unit_pronostic">
    </com.google.android.gms.ads.doubleclick.PublisherAdView>

What could be wrong?

Thank's in advance for your answers.

Community
  • 1
  • 1
MHogge
  • 4,504
  • 12
  • 45
  • 86
  • 1
    The issue was due to a wrong language configuration. What seems strange is that this configuration didn't makes any problems with IOS devices but does with Android's one. – MHogge Nov 16 '15 at 09:23
  • 2
    can you please clarify, what kind of "language configuration" you were referring to? I seem to be facing the same issue. – isapego Feb 01 '17 at 21:48
  • This is more than 1 year ago and I don't have access anymore to the DoubleClick account so I can't help you so much. I know I had 3 languages (Fr, Nl, En) with Fr set as default and I couldn't get the NL & EN ones. If I remember well I switched to EN as default language configuration and that's it. I still doesn't understand why this solved my issue so sorry for not helping so much. – MHogge Feb 02 '17 at 08:23
  • 1
    Check bellow answer https://stackoverflow.com/a/52165214/3073945 – Md. Sajedul Karim Sep 04 '18 at 11:25
  • In my case I only changed to other virtual device and ads began load. – Teofilo Israel Vizcaino Rodrig Nov 30 '18 at 22:05

26 Answers26

185

W/Ads: Failed to load ad: 3

As per the Documentation you are getting the following error code:

public static final int ERROR_CODE_NO_FILL

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

Constant Value: 3

Based on the post onFailedToReceiveAd - Ad request successful, but no ad returned due to lack of ad inventory when using admob with adwhirl:

If you are getting this error, then your code is correct. The issue is that AdMob does not always have an ad to return for every request. This may happen particularly if you have just registered your AdMob publisher ID, as it takes some time and multiple requests before the new ID starts returning ads.

Another reason your fill rate may be low is that you don't have AdSense backfill enabled, or you have filtered out some ads. Check your app settings to see if that is the case.

Community
  • 1
  • 1
blizzard
  • 4,977
  • 2
  • 31
  • 47
29

There is one option which helped in our case. As @blizzard mentioned in your application settings in Google Developer Console there is a section which called "Pricing and Distribution". In this section there is a checkbox "CONTAINS ADS". In our case it was disabled. After enabling we successfully received ads.

enter image description here

Boken
  • 3,207
  • 9
  • 25
  • 31
23

I had the same error in my app. I was launching the app in debug configuration. The problem was solved as soon as I run the release version of my app on the same device. In Android Studio just go to Build -> Generate Signed APK and choose the release configuration. Then install release .apk on your device. In debug configuration you can also check whether your test ads appears by adding AdRequest.Builder.addTestDevice("YOUR TEST DEVICE"). If it's ok with ads appearing, it means you just need release configuration.

  • 4
    In nowadays addTestDevice is deprecated and you have yo set AD unit ID. Reference: https://developers.google.com/admob/android/test-ads – Anton Balashov Mar 30 '20 at 13:24
8

One new and update answer: Many apps that were removed this October(2018) for the lack of Privacy Policy are unable to receive ads after they get back in Play Store. You must use this form to request a "reset" for that app's ads. https://support.google.com/admob/contact/appeal_policy_violation

Took me a few days to realize and find the answer. Hope you get your ads back.

  • Can you please mention what you write in section: "What changes have you made to your app or account in order to comply with our program policies? *" – Arbaz Alam Nov 20 '18 at 18:58
  • I added the required privacy policy – Marius Razvan Varvarei Nov 20 '18 at 20:06
  • Did you mean that you have copy and paste your privacy policy in that field of appeal?? – Arbaz Alam Nov 21 '18 at 08:41
  • Actually my app is now available on playstore after submitting the updated app with privacy policy, But Admob ads are not enabled. – Arbaz Alam Nov 21 '18 at 08:42
  • I wrote in that field exatly this: "I added the required privacy policy" – Marius Razvan Varvarei Nov 21 '18 at 17:38
  • Google is crazy now cause of policy changes. They tried to copy concept of apple but they are losing trust of developers – Anand Savjani Nov 21 '18 at 19:17
  • @AnandSavjani That correct, every another month they update the policy. I have 78 apps uploaded on playstore. when any policy update comes I need to update nearly half of them. And the best part is that I am an individual developer :) . I don't get time for new development. – Arbaz Alam Nov 22 '18 at 06:58
  • @ArbazAlam : please mail me on appemboss@gmail.com. I have some good concept to discuss about policy – Anand Savjani Nov 23 '18 at 09:39
  • 1
    @MariusRazvanVarvarei I'm unable to access this form. It's redirecting to https://support.google.com/admob/?visit_id=636850447130223746-2857340252&rd=1#topic=7383088 – Ammar Feb 06 '19 at 10:32
5

W/Ads: Failed to load ad: 3

It Means that your code is correct but due to less amount of request to the server your ads are not Visible. To check the Test ADS you Should put the code in loop for some time, and you have to give multiple requests so that your admob receives multiple requests and will load the ads immediately.

Add the below code

for(int i=0;i<1000;i++) {
            AdRequest adRequest = new AdRequest
                    .Builder()
                    .addTestDevice("B431EE858B5F1986E4D89CA31250F732")
                    .build();
            accountSettingsBinding.adView.loadAd(adRequest);
        } 

Restart Your application multiple times.

Remove the Loop after you start receiving ads.

Vivek Makwana
  • 175
  • 2
  • 10
5

I hadn't published a version of my app with ads yet.

I was seeing error code 3: ERROR_CODE_NO_FILL after I switched from emulators with a debug version to a real device with the release version (installed through adb shell commands).

I waited 12+ hours and I could see ad requests on the AdMob portal, but no matches (match rate of 0%). I went to the Play Console > Store Presence > Pricing & distribution and switched the radio button for Contains ads to Yes, it has ads. I even tried uploading my app bundle (without publishing) to the Play Console. Neither of these worked.

Various AdMob help articles (including the one linked below) mention that if you've been seeing test ads (ads labeled with "Test Ad"), then your code is working and real ads should work as expected (once they build up inventory).

With that in mind, I went ahead and published my app to the Play Store and once the update was live, I downloaded it via the Play Store app on my real phone and the ads loaded no problem and my match rate is now sitting at 66% on AdMob. From the AdMob FAQ article, it sounds like it typically takes a few hours and could have taken up to 24 hours for ads to start showing.

ad mob FAQ re: how long does it take ads to show

Source: https://support.google.com/admob/answer/2993019?hl=en

Lifes
  • 1,091
  • 2
  • 21
  • 39
  • Not necessary that your app it's live in Google Play or other platform if you activate Test Ads :) – Genaut Jan 26 '20 at 12:43
4

This is a simple WORKAROUND (no solution):

You can install a mediation such as InMobi: https://developers.google.com/admob/android/mediation/inmobi

In this way, if for whatever reason admob is not showing you ads, you can still show them from other ad networks.

Pablo Alfonso
  • 1,792
  • 1
  • 11
  • 20
  • 1
    do you know any a specific tutorial for this? – Amin Pinjari Aug 12 '19 at 17:43
  • 1
    I just followed the instructions from that link. Anyways, I found that inmobi was not showing ads frequently (not even 50% of the time) so I'm not longer using it. – Pablo Alfonso Aug 13 '19 at 19:03
  • 1
    Right now (8/15/2019), Google Admob is working for me (my app is "Match4app"). Match Rate is 100% and show rate is 80% for US, Canada and Spain, 75 % for Germany, etc. – Pablo Alfonso Aug 15 '19 at 11:50
3

Don't forget to add payment methods on Google AdMod. It was my issue with "Error code 3". Anyway, when your account Google AdMod will be ready to show ads (for tested device or real users) they send you email that your account verified and ready to work! After this letter everything should work fine.

Novdar
  • 280
  • 2
  • 10
  • Same here. AdMob says: "Provide your payment details This info is required before AdMob can serve your ads" , so check the payments settings in the AdMob portal – Magnus Johansson Dec 04 '20 at 16:42
2

Option 1: Go to Settings-> search Reset advertising ID -> click on Reset advertising ID -> OK. You should start receiving Ads now

No search option? Try Option 2

Option 2: Go to Settings->Google->Ads->Reset advertising ID->OK

No Google options in Settings? Try Option 3

Option 3:Look for Google Settings (NOT THE SETTINGS)->Ads->Reset advertising ID

Devendra Vaja
  • 3,437
  • 1
  • 16
  • 13
1

I'm just going to leave this here incase it works for someone. After trying all the fixes mentioned in all the forums and posts what worked for me is simply using a global AdRequest object. I would use the same object when calling loadAd on each adView in each Activity. I have seen that it tends to load the same Ad on each AdView regardless of activity but at least now I get ads.

Tamim Khan
  • 21
  • 5
1

If your published app has no admob and its settings in Google Developer Console (called "Pricing and Distribution") "CONTAINS ADS" is uncheched. Always develop with test id with logcat output.

Arda
  • 1,272
  • 11
  • 16
1

On new admob version USE this :

//Load your adView before

    adView.setAdListener(new AdListener() {    


        @Override
        public void onAdFailedToLoad(int errorCode) {
            // Code to be executed when an ad request fails.
            Toast.makeText(Your current activity.this, "Ad failed: " + errorCode, Toast.LENGTH_SHORT).show();
        }




    });

If Ads load on your emulator, meaning that they return test ads, that should mean that there's nothing wrong with your code. Do they load test ads on your phone as well?

If you're able to see test ads on the emulator and test devices, then it usually just means that AdMob (assuming you're using AdMob) is unable to return an Ad due to a lack of Ad inventory. If this is the case, then when looking at the Logcat you should see the line W/Ads: Failed to load ad: 3.

What you should do is plug in an Android phone to your computer, and then in Android Studio click on Logcat, and in the top left you should see some devices to select from. Select your phone if it's listed (it should be). The logcat will now be printing everything your phone is printing. In the filter bar, type in ads to filter out stuff you don't need to see.

Then open your application in your phone, and check the logcat. Make sure your device isn't considered a test device. If you see W/Ads: Failed to load ad: 3 then that should mean that the problem lies with AdMob and not you.

If it doesn't say that and it says something else, then I obviously don't know.

Franklin CI
  • 161
  • 1
  • 9
1

This error can be because of too much reasons. Try first with testAds ca-app-pub id to avoid admob account issues.

Check that you extends AppCompatActivity in your mainActivity, in my case that was the issue

Also check all this steps again https://developers.google.com/admob/android/quick-start?hl=en-419#import_the_mobile_ads_sdk

Alberto Perez
  • 695
  • 12
  • 15
0

If error continues last try is create a new placement in admob. This works for me. Without changing anything(except placement id string) else in code ads start displaying.

Divyaadz
  • 147
  • 2
  • 10
0

I've made the stupidest error. Passed app id into MobileAds.initialize from one app and used placement id in loadAd from another admob app.

Once I corrected placement id all come to work.

Artem Mostyaev
  • 3,589
  • 10
  • 48
  • 55
0

For me the reason was that one device, a Xiaomi Mi 9 just was not working anymore and not displaying ads, so I pulled out my tablet and I saw no errors and it was displaying ads in the release.

0

There could be one of the reasons that You might have created your advertise from adMob console by clicking yes that your app is already in playstore and giving url of your live app.Now in that case you wont able to run your ads in any other projects which is having diff package id then the live one(not even test advertise).You have to implement the ads in live project containing same package id and in other case will be getting ad failed to load ad : 3.

Thanks! Happy coding!

Android Geek
  • 500
  • 5
  • 14
0
Your ad units are not displaying ads because you haven't yet verified your address (PIN).

Maybe it helps to others, i received this notification on my AdSense account. enter image description here

nAkhmedov
  • 2,913
  • 4
  • 29
  • 59
0

This works for me


Settings->Google->Ads->Reset advertising ID->OK

But In some cases, ads are automatically come after uploaded to the play store.

Kaushik Borah
  • 91
  • 1
  • 3
  • Where are those menu?? – moondaddi Apr 22 '20 at 06:23
  • I haven't understood what type of menu are you talking about. But this setting is in your phone's settings. – Kaushik Borah Apr 22 '20 at 11:55
  • Can you tell more accurate where is it option? I don't see anywhere – Dyno Cris Aug 28 '20 at 02:03
  • @DynoCris These settings are present under Google section, it's location is different from different phones. But one more thing, if we can't see your ad and receive the error "Failed to load ad: 3", this is totally fine. You will see the ad when you upload the app on play store or maybe when you build a released apk version. – Kaushik Borah Aug 29 '20 at 15:02
0

W/Ads: Failed to load ad: 3

Means: The ad request was successful, but no ad was returned due to lack of ad inventory.

So, In my case, I have commented the keywords: property to load all types of ads. Now my ad is loading properly.

static final MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(
        testDevices: testDevice != null ? <String>[testDevice] : null,
        nonPersonalizedAds: true,
        //keywords: <String>['Fitness', 'Yoga', 'Health', 'Exercise', 'Game', 'Doctor', 'Medical'],);
Rahul
  • 23
  • 5
0
  1. Check And Make sure You Have not linked two accounts to adsense as I have mistakenly done in my case.

  2. if you are just creating your admob account waut for 24 hours and try again

Norbert
  • 4,003
  • 10
  • 27
  • 49
0

My problem was with Payment. I refreshed my payment method and it helped me.

Dyno Cris
  • 712
  • 5
  • 14
0

in my case :
I/Ads: Ad failed to load : Account not approved yet.

but you need to implement the listener for knowing the error

First import the listener : import com.google.android.gms.ads.AdListener;
Second create variable : private final String TAG2 = com.ringtones.splash.class.getSimpleName();

            mAdView.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded() {Log.d(TAG2, "google banner ad loaded"); }
            @Override
            public void onAdFailedToLoad(LoadAdError adError) {Log.d(TAG2, "google banner ad failed to load : "+ adError.getMessage());}
            @Override
            public void onAdOpened() {Log.d(TAG2, "google banner ad opened");}
            @Override
            public void onAdClicked() {Log.d(TAG2, "google banner ad clicked");}
            @Override
            public void onAdLeftApplication() {Log.d(TAG2, "google banner ad left application");}
            @Override
            public void onAdClosed() {Log.d(TAG2, "google banner ad closed");}
        });
yacine
  • 67
  • 6
0

It's not a problem. When you first design your application, you can use the test codes provided by AdMob. These codes work great on your emulators and on real devices. But as soon as you publish your application on Google Play, these codes stop working immediately. You need to make your test devices. https://developers.google.com/admob/android/test-ads

But you can use a life hack to continue using test codes for an already published application. Change the application ID in the build.gradle(android) file to a different name and everything will work. Do not forget to return the old name before publishing the application to the Market.

Retron
  • 89
  • 5
0

I had this problem with device. My ads worked without problems with UnitID Test Emulator, but when testing on my device it doesn't work with message "failed to load ad: 3"

My solution was to test the app in the internal test environment of Google Play Console creating User Verifiers

Then I downloaded the app on the same device from Google Play internal testing and the ads worked for me, and it worked in production too

enter image description here

Luis
  • 71
  • 5
-1

I was getting this error in Flutter. Check the debug console and find this command

Use.RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("")

And copy the device id from list to MobileAdTargetingInfo testDevices and it will work !!!

Sakrof
  • 1
  • 2