Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

No fill from ad server

Tags:

android

admob

I know this topic had been posted many times, but there's no REAL solution for this problem.

Recently, in few apps, I've decided to make an update. It was a minor update changing library version (admob as well) to the latest ones. I've also changed targetSdkVersion from 25 to 26. After few days I've checked stats on admob and in all of these apps fill rate had gone down to 0! And the number of requests had gone up. For banners and interstitials. Other apps are unaffected.

I thought there was some silly mistake, but I cannot find any issue in my code.

In logs for the banner as well as for interstitial I'm seeing this:

I/Ads: No fill from ad server.

W/Ads: Failed to load ad: 3

I've tried my best to simplify the problem, so I've created a brand new project from android studio template - Google AdMob Ads Activity and I've set package name to one of the affected apps. And the result is the same. Still no fill.

  • I've tried adding device as a test device and this log

This request is sent from a test device.

is confirming this.

  • I've tried using dummy ad ids from this post: Is there any AdMob dummy id?

  • I've tried using different devices with different sdk level.

  • I've tried using firebase-ads as well as play-services-ads.

  • I've tried using older admob sdks.

  • I've tried using lower targerSdkVersions.

All of these gave me nothing. But I've found only one way to this: CHANGE PACKAGE NAME. Immediately, no matter what ad is was, and if it's a test device or not I'm always getting an ad. Interstitials and banners.

Here's my MainActivity.java code:

public class MainActivity extends AppCompatActivity {

    public static final String ADMOB_INTERSTITIAL_DUMMY = "ca-app-pub-3940256099942544/1033173712";
    public static final String ADMOB_INTERSTITIAL = "ca-app-pub-my_own_ad_id";
    public InterstitialAd interstitial;

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

        AdView adView = (AdView) findViewById(R.id.adView);
        adView.loadAd(newAdRequest());

        interstitial = new InterstitialAd(this);
        interstitial.setAdUnitId(ADMOB_INTERSTITIAL_DUMMY); //ADMOB_INTERSTITIAL
        interstitial.loadAd(newAdRequest());

        interstitial.setAdListener(new AdListener() {

            @Override
            public void onAdClosed() {
                super.onAdClosed();
                interstitial.loadAd(newAdRequest());
            }

        });

        Button btnShowAd = (Button) findViewById(R.id.btnShowAd);
        btnShowAd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(interstitial != null){
                    if(interstitial.isLoaded()){
                        interstitial.show();
                    }
                }
            }
        });
    }

    private static AdRequest newAdRequest() {
        AdRequest adRequest = new AdRequest.Builder()
                .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                .addTestDevice("device_1")
                .addTestDevice("device_2")
                .addTestDevice("device_3")
                .addTestDevice("device_4")
                .build();
        return adRequest;
    }

}

AndroidManifest.xml (default from AdMob project template):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="pl.rosmedia.memo">

    <!-- Include required permissions for Google Mobile Ads to run. -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <!-- This meta-data tag is required to use Google Play Services. -->
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity> <!-- Include the AdActivity configChanges and theme. -->
        <activity
            android:name="com.google.android.gms.ads.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
            android:theme="@android:style/Theme.Translucent" />
    </application>

</manifest>

Full log:

09-06 11:48:41.930 27309-27309/pl.rosmedia.memo W/ResourcesManager: getTopLevelResources: /data/app/pl.rosmedia.memo-2/base.apk / 1.0 running in pl.rosmedia.memo rsrc of package pl.rosmedia.memo
09-06 11:48:41.940 27309-27309/pl.rosmedia.memo I/InjectionManager: Inside getClassLibPath + mLibMap{0=, 1=}
09-06 11:48:42.010 27309-27309/pl.rosmedia.memo D/ResourcesManager: For user 0 new overlays fetched Null
09-06 11:48:42.020 27309-27309/pl.rosmedia.memo W/ActivityThread: Application pl.rosmedia.memo is waiting for the debugger on port 8100...
09-06 11:48:42.030 27309-27309/pl.rosmedia.memo I/System.out: Sending WAIT chunk
09-06 11:48:42.050 27309-27316/pl.rosmedia.memo I/art: Debugger is active
09-06 11:48:42.230 27309-27309/pl.rosmedia.memo I/System.out: Debugger has connected
09-06 11:48:42.230 27309-27309/pl.rosmedia.memo I/System.out: waiting for debugger to settle...
09-06 11:48:42.430 27309-27309/pl.rosmedia.memo I/System.out: waiting for debugger to settle...
09-06 11:48:42.631 27309-27309/pl.rosmedia.memo I/System.out: waiting for debugger to settle...
09-06 11:48:42.831 27309-27309/pl.rosmedia.memo I/System.out: waiting for debugger to settle...
09-06 11:48:43.031 27309-27309/pl.rosmedia.memo I/System.out: waiting for debugger to settle...
09-06 11:48:43.231 27309-27309/pl.rosmedia.memo I/System.out: waiting for debugger to settle...
09-06 11:48:43.441 27309-27309/pl.rosmedia.memo I/System.out: waiting for debugger to settle...
09-06 11:48:43.642 27309-27309/pl.rosmedia.memo I/System.out: debugger has settled (1410)
09-06 11:48:43.642 27309-27309/pl.rosmedia.memo I/InjectionManager: Inside getClassLibPath caller 
09-06 11:48:43.682 27309-27309/pl.rosmedia.memo D/FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization.
09-06 11:48:43.712 27309-27309/pl.rosmedia.memo D/FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization.
09-06 11:48:43.742 27309-27309/pl.rosmedia.memo I/FA: App measurement is starting up, version: 11200
09-06 11:48:43.742 27309-27309/pl.rosmedia.memo I/FA: To enable debug logging run: adb shell setprop log.tag.FA VERBOSE
09-06 11:48:43.772 27309-27309/pl.rosmedia.memo W/ResourcesManager: getTopLevelResources: /data/app/pl.rosmedia.memo-2/base.apk / 1.0 running in pl.rosmedia.memo rsrc of package pl.rosmedia.memo
09-06 11:48:43.782 27309-27309/pl.rosmedia.memo V/FA: Collection enabled
09-06 11:48:43.782 27309-27309/pl.rosmedia.memo V/FA: App package, google app id: pl.rosmedia.memo, 1:354797241783:android:9cf595305e60aa3a
09-06 11:48:43.782 27309-27309/pl.rosmedia.memo I/FA: To enable faster debug mode event logging run:
                                                        adb shell setprop debug.firebase.analytics.app pl.rosmedia.memo
09-06 11:48:43.782 27309-27309/pl.rosmedia.memo D/FA: Debug-level message logging enabled
09-06 11:48:43.802 27309-27309/pl.rosmedia.memo V/FA: Registered activity lifecycle callback
09-06 11:48:43.802 27309-27309/pl.rosmedia.memo I/FirebaseInitProvider: FirebaseApp initialization successful
09-06 11:48:43.812 27309-27309/pl.rosmedia.memo D/InjectionManager: InjectionManager
09-06 11:48:43.812 27309-27309/pl.rosmedia.memo D/InjectionManager: fillFeatureStoreMap pl.rosmedia.memo
09-06 11:48:43.812 27309-27309/pl.rosmedia.memo I/InjectionManager: Constructor pl.rosmedia.memo, Feature store :{}
09-06 11:48:43.812 27309-27309/pl.rosmedia.memo I/InjectionManager: featureStore :{}
09-06 11:48:43.812 27309-27415/pl.rosmedia.memo V/FA: Using measurement service
09-06 11:48:43.822 27309-27415/pl.rosmedia.memo V/FA: Connecting to remote service
09-06 11:48:43.832 27309-27309/pl.rosmedia.memo W/ResourcesManager: getTopLevelResources: /data/app/pl.rosmedia.memo-2/base.apk / 1.0 running in pl.rosmedia.memo rsrc of package pl.rosmedia.memo
09-06 11:48:43.842 27309-27309/pl.rosmedia.memo W/ResourceType: Failure getting entry for 0x01080946 (t=7 e=2374) (error -75)
09-06 11:48:43.862 27309-27415/pl.rosmedia.memo V/FA: Using measurement service
09-06 11:48:43.862 27309-27415/pl.rosmedia.memo V/FA: Connection attempt already in progress
09-06 11:48:43.862 27309-27309/pl.rosmedia.memo W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
09-06 11:48:43.882 27309-27309/pl.rosmedia.memo V/FA: onActivityCreated
09-06 11:48:43.902 27309-27309/pl.rosmedia.memo D/PhoneWindow: *FMB* installDecor mIsFloating : false
09-06 11:48:43.902 27309-27309/pl.rosmedia.memo D/PhoneWindow: *FMB* installDecor flags : -2139029248
09-06 11:48:43.992 27309-27309/pl.rosmedia.memo D/TextView: setTypeface with style : 0
09-06 11:48:43.992 27309-27309/pl.rosmedia.memo D/TextView: setTypeface with style : 0
09-06 11:48:44.012 27309-27309/pl.rosmedia.memo D/TextView: setTypeface with style : 0
09-06 11:48:44.042 27309-27309/pl.rosmedia.memo W/ResourcesManager: getTopLevelResources: /data/app/com.google.android.gms-2/base.apk / 1.0 running in pl.rosmedia.memo rsrc of package com.google.android.gms
09-06 11:48:44.052 27309-27309/pl.rosmedia.memo D/ResourcesManager: For user 0 new overlays fetched Null
09-06 11:48:44.052 27309-27309/pl.rosmedia.memo W/ResourcesManager: Asset path '/system/framework/com.android.media.remotedisplay.jar' does not exist or contains no resources.
09-06 11:48:44.052 27309-27309/pl.rosmedia.memo W/ResourcesManager: Asset path '/system/framework/com.android.location.provider.jar' does not exist or contains no resources.
09-06 11:48:44.052 27309-27309/pl.rosmedia.memo W/ResourcesManager: getTopLevelResources: /data/app/com.google.android.gms-2/base.apk / 1.0 running in pl.rosmedia.memo rsrc of package com.google.android.gms
09-06 11:48:44.052 27309-27309/pl.rosmedia.memo I/InjectionManager: Inside getClassLibPath caller 
09-06 11:48:44.112 27309-27309/pl.rosmedia.memo W/ResourcesManager: getTopLevelResources: /data/app/com.google.android.gms-2/base.apk / 1.0 running in pl.rosmedia.memo rsrc of package com.google.android.gms
09-06 11:48:44.132 27309-27309/pl.rosmedia.memo W/ResourcesManager: getTopLevelResources: /data/app/com.google.android.gms-2/base.apk / 1.0 running in pl.rosmedia.memo rsrc of package com.google.android.gms
09-06 11:48:44.142 27309-27309/pl.rosmedia.memo D/ResourcesManager: For user 0 new overlays fetched Null
09-06 11:48:44.142 27309-27309/pl.rosmedia.memo W/ResourcesManager: Asset path '/system/framework/com.android.media.remotedisplay.jar' does not exist or contains no resources.
09-06 11:48:44.142 27309-27309/pl.rosmedia.memo W/ResourcesManager: Asset path '/system/framework/com.android.location.provider.jar' does not exist or contains no resources.
09-06 11:48:44.222 27309-27309/pl.rosmedia.memo D/ApplicationPackageManager: getResourcesForApplication com.google.android.gms got new pi = android.app.LoadedApk@2ba64dff
09-06 11:48:44.222 27309-27309/pl.rosmedia.memo W/ResourcesManager: getTopLevelResources: /data/data/com.google.android.gms/app_chimera/m/00000012/DynamiteModulesA_GmsCore_prodlmp_xhdpi_release.apk / 1.0 running in pl.rosmedia.memo rsrc of package com.google.android.gms
09-06 11:48:44.222 27309-27309/pl.rosmedia.memo D/ResourcesManager: For user 0 new overlays fetched Null
09-06 11:48:44.222 27309-27309/pl.rosmedia.memo D/ApplicationPackageManager: getResourcesForApplication com.google.android.gms got new pi = android.app.LoadedApk@2ba64dff
09-06 11:48:44.222 27309-27309/pl.rosmedia.memo W/ResourcesManager: getTopLevelResources: /data/data/com.google.android.gms/app_chimera/m/00000012/DynamiteModulesA_GmsCore_prodlmp_xhdpi_release.apk / 1.0 running in pl.rosmedia.memo rsrc of package com.google.android.gms
09-06 11:48:44.222 27309-27309/pl.rosmedia.memo D/DynamitePackage: Instantiated singleton DynamitePackage.
09-06 11:48:44.222 27309-27309/pl.rosmedia.memo D/DynamitePackage: Instantiating com.google.android.gms.ads.ChimeraAdManagerCreatorImpl
09-06 11:48:44.262 27309-27309/pl.rosmedia.memo W/ResourcesManager: getTopLevelResources: /data/app/com.google.android.gms-2/base.apk / 1.0 running in pl.rosmedia.memo rsrc of package com.google.android.gms
09-06 11:48:44.262 27309-27309/pl.rosmedia.memo W/ResourcesManager: getTopLevelResources: /data/app/com.google.android.gms-2/base.apk / 1.0 running in pl.rosmedia.memo rsrc of package com.google.android.gms
09-06 11:48:44.322 27309-27309/pl.rosmedia.memo W/ResourcesManager: getTopLevelResources: /data/app/com.google.android.gms-2/base.apk / 1.0 running in pl.rosmedia.memo rsrc of package com.google.android.gms
09-06 11:48:44.392 27309-27309/pl.rosmedia.memo I/Ads: Starting ad request.
09-06 11:48:44.392 27309-27309/pl.rosmedia.memo I/Ads: This request is sent from a test device.
09-06 11:48:44.402 27309-27463/pl.rosmedia.memo W/linker: libwebviewchromium.so: unused DT entry: type 0x6ffffffe arg 0x11c98
09-06 11:48:44.402 27309-27463/pl.rosmedia.memo W/linker: libwebviewchromium.so: unused DT entry: type 0x6fffffff arg 0x3
09-06 11:48:44.422 27309-27309/pl.rosmedia.memo D/DynamitePackage: Instantiating com.google.android.gms.ads.ChimeraAdManagerCreatorImpl
09-06 11:48:44.442 27309-27309/pl.rosmedia.memo I/Ads: Starting ad request.
09-06 11:48:44.442 27309-27309/pl.rosmedia.memo I/Ads: This request is sent from a test device.
09-06 11:48:44.462 27309-27309/pl.rosmedia.memo D/Activity: performCreate Call Injection manager
09-06 11:48:44.462 27309-27415/pl.rosmedia.memo I/FA: Tag Manager is not found and thus will not be used
09-06 11:48:44.462 27309-27415/pl.rosmedia.memo D/FA: Logging event (FE): ad_query(_aq), Bundle[{firebase_event_origin(_o)=am, ad_event_id(_aeid)=6721003539668014743}]
09-06 11:48:44.472 27309-27309/pl.rosmedia.memo I/InjectionManager: dispatchOnViewCreated > Target : pl.rosmedia.memo.MainActivity isFragment :false
09-06 11:48:44.492 27309-27415/pl.rosmedia.memo V/FA: Using measurement service
09-06 11:48:44.492 27309-27415/pl.rosmedia.memo V/FA: Connection attempt already in progress
09-06 11:48:44.492 27309-27415/pl.rosmedia.memo D/FA: Logging event (FE): ad_query(_aq), Bundle[{firebase_event_origin(_o)=am, ad_event_id(_aeid)=6721003539668014744}]
09-06 11:48:44.492 27309-27472/pl.rosmedia.memo D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: false
09-06 11:48:44.502 27309-27463/pl.rosmedia.memo I/WebViewFactory: Loading com.google.android.webview version 60.0.3112.116 (code 311211600)
09-06 11:48:44.502 27309-27463/pl.rosmedia.memo W/ResourcesManager: getTopLevelResources: /data/app/com.google.android.webview-1/base.apk / 1.0 running in pl.rosmedia.memo rsrc of package com.google.android.webview
09-06 11:48:44.502 27309-27415/pl.rosmedia.memo V/FA: Using measurement service
09-06 11:48:44.502 27309-27415/pl.rosmedia.memo V/FA: Connection attempt already in progress
09-06 11:48:44.502 27309-27415/pl.rosmedia.memo V/FA: Using measurement service
09-06 11:48:44.502 27309-27415/pl.rosmedia.memo V/FA: Connection attempt already in progress
09-06 11:48:44.502 27309-27415/pl.rosmedia.memo V/FA: Activity resumed, time: 1210576665
09-06 11:48:44.512 27309-27415/pl.rosmedia.memo D/FA: Logging event (FE): screen_view(_vs), Bundle[{firebase_event_origin(_o)=auto, firebase_screen_class(_sc)=MainActivity, firebase_screen_id(_si)=6721003539668014745}]
09-06 11:48:44.522 27309-27309/pl.rosmedia.memo D/PhoneWindow: *FMB* isFloatingMenuEnabled mFloatingMenuBtn : null
09-06 11:48:44.522 27309-27309/pl.rosmedia.memo D/PhoneWindow: *FMB* isFloatingMenuEnabled return false
09-06 11:48:44.522 27309-27415/pl.rosmedia.memo V/FA: Using measurement service
09-06 11:48:44.522 27309-27415/pl.rosmedia.memo V/FA: Connection attempt already in progress
09-06 11:48:44.552 27309-27463/pl.rosmedia.memo D/ResourcesManager: For user 0 new overlays fetched Null
09-06 11:48:44.552 27309-27463/pl.rosmedia.memo I/InjectionManager: Inside getClassLibPath caller 
09-06 11:48:44.562 27309-27472/pl.rosmedia.memo I/OpenGLRenderer: Initialized EGL, version 1.4
09-06 11:48:44.562 27309-27472/pl.rosmedia.memo D/OpenGLRenderer: Get maximum texture size. GL_MAX_TEXTURE_SIZE is 4096
09-06 11:48:44.562 27309-27472/pl.rosmedia.memo D/OpenGLRenderer: Enabling debug mode 0
09-06 11:48:44.592 27309-27463/pl.rosmedia.memo I/art: Rejecting re-init on previously-failed class java.lang.Class<com.android.webview.chromium.TokenBindingManagerAdapter>
09-06 11:48:44.592 27309-27463/pl.rosmedia.memo I/art: Rejecting re-init on previously-failed class java.lang.Class<com.android.webview.chromium.TokenBindingManagerAdapter>
09-06 11:48:44.602 27309-27463/pl.rosmedia.memo I/art: Rejecting re-init on previously-failed class java.lang.Class<com.android.webview.chromium.ServiceWorkerControllerAdapter>
09-06 11:48:44.602 27309-27463/pl.rosmedia.memo I/art: Rejecting re-init on previously-failed class java.lang.Class<com.android.webview.chromium.ServiceWorkerControllerAdapter>
09-06 11:48:44.602 27309-27309/pl.rosmedia.memo I/InjectionManager: dispatchCreateOptionsMenu :pl.rosmedia.memo.MainActivity
09-06 11:48:44.602 27309-27309/pl.rosmedia.memo I/InjectionManager: dispatchPrepareOptionsMenu :pl.rosmedia.memo.MainActivity
09-06 11:48:44.612 27309-27463/pl.rosmedia.memo I/cr_LibraryLoader: Time to load native libraries: 2 ms (timestamps 5014-5016)
09-06 11:48:44.622 27309-27463/pl.rosmedia.memo I/chromium: [INFO:library_loader_hooks.cc(144)] Chromium logging enabled: level = 0, default verbosity = 0
09-06 11:48:44.622 27309-27463/pl.rosmedia.memo I/cr_LibraryLoader: Expected native library version number "60.0.3112.116", actual native library version number "60.0.3112.116"
09-06 11:48:44.653 27309-27415/pl.rosmedia.memo D/FA: Connected to remote service
09-06 11:48:44.653 27309-27415/pl.rosmedia.memo V/FA: Processing queued up service tasks: 6
09-06 11:48:44.663 27309-27309/pl.rosmedia.memo I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@452ebed time:486985066
09-06 11:48:44.953 27309-27318/pl.rosmedia.memo I/Ads: No fill from ad server.
09-06 11:48:44.953 27309-27321/pl.rosmedia.memo I/Ads: No fill from ad server.
09-06 11:48:44.963 27309-27309/pl.rosmedia.memo W/Ads: Failed to load ad: 3
09-06 11:48:44.963 27309-27309/pl.rosmedia.memo I/Ads: Scheduling ad refresh 60000 milliseconds from now.
09-06 11:48:44.963 27309-27309/pl.rosmedia.memo W/Ads: Failed to load ad: 3

Could it mean that I've been banned? I didn't get any email from admob, haven't changed places where I display ads and also this happened for few apps at the same time, at the day I've updated them. In the past, I had similar issues, but it was just my devices that didn't get any fill rate, but it wasn't 0 worldwide and also it came back to normal after some time. But this case is different.

I'm aware of this topic:

failed to load ad : 3

But this is not a lack of ad inventory, it cannot go from 90% to 0% on few apps at the same time.

like image 977
Makalele Avatar asked Nov 07 '22 17:11

Makalele


1 Answers

The reason for this is that I had to check app is compliant with COPPA, which made this app "for kids" in AdMob. But COPPA compliant ads have very small fill rate. Unfortunately, there's no way to uncheck COPPA as Google will simply reject this change. I got a word from Google that this change is because of some law changes in the US. Looks like they want to kill ads in kids apps. We have some apps, which we haven't updated since we don't want to check COPPA and because of this, their fill rate is nearly 100%.

like image 111
Makalele Avatar answered Nov 14 '22 23:11

Makalele