"No fill from ad server" but only for Amazon appstore version of app running on Kindle Fire devices

821 views
Skip to first unread message

b0b

unread,
Mar 30, 2016, 7:32:15 AM3/30/16
to Google Mobile Ads SDK Developers
Hi,

I have an app published on both Google Play and the Amazon appstore, both using Admob.
Each version has a different Android package name.

The current situation is this:

- Google Play version installed on Android with Google Play Services => Ads load and display fine
- Google Play version installed on Amazon Kindle Fire Tablet (thus without GPS) => Ads load and display fine
- Amazon version installed on Android with Google Play Services => Ads load and display fine
- Amazon version installed on Amazon Kindle Fire Tablet => no ads displayed, with "No fill from ad server" error

I'm at a loss to understand why the last case is not working especially since I remember it used to work a few month ago.
I tried various thing such as using a different ad unit for the Amazon version, but it did not fix it.

Vu Chau (Mobile Ads SDK Team)

unread,
Mar 30, 2016, 11:44:37 AM3/30/16
to Google Mobile Ads SDK Developers
Hi there,

I don't think the issue is related to Google Play services - in any case, your app will either have already been compiled against the version you specified at runtime, or use the version locally available on the device upon installation.  As a result, I'd like to think of the "no fill" as something originating from the ad server, particularly since you also mentioned ad serving worked well on that setup a few months ago.

Since a "no fill" is basically an error for whenever the server doesn't have an ad available in inventory to return, I'd recommend going over your AdMob serving settings.  You could also implement mediation (if you haven't, and want to try it out) to boost your fill rate.

Vu Chau
Mobile Ads SDK Team

b0b

unread,
Mar 30, 2016, 1:25:15 PM3/30/16
to Google Mobile Ads SDK Developers
Thank you for your reply.

Precision: test ads are always working.

In the last case not working, Google Play Services is not available and the app package name is not registered on Google Play.
Could the package name being unregistered on Google Play be the cause of the issue ? That's the only major difference with case 2 that is working:
except from the different package name, both app versions are 99% identical.

I could not test yet what happens on regular Android without Play Services (such as an AOSP install).
I tried in the Android emulator but it seems that the standalone AdMob client lib is hardcoded to always serve test ads in the emulator, even if the app
doesn't explicitely call builder.addTestDevice(AdRequest.DEVICE_ID_EMULATOR).
 
I did not try using mediation yet, but I doubt it will have an effect (why would case 2 work then ?)
I also did not try to upgrade the Google Play Service client lib to the latest rev 29 version (I'm using rev 27 currently), in
case if fixes this issue.

Vu Chau (Mobile Ads SDK Team)

unread,
Mar 30, 2016, 2:40:12 PM3/30/16
to Google Mobile Ads SDK Developers
Hello,
Precision: test ads are always working.
Test ads should always work regardless of the environment you are in.  They are designed to specifically validate your implementation of the SDK, so if you can see the test ad in that last use case, then there is nothing wrong with your app, code-wise.

In the last case not working, Google Play Services is not available and the app package name is not registered on Google Play.
Could the package name being unregistered on Google Play be the cause of the issue ? That's the only major difference with case 2 that is working:
except from the different package name, both app versions are 99% identical.
 
If Google Play Services isn't locally available on the device, the app will make use of the Play services version that it is compiled against at runtime (that is why your app can serve ad in a Play-services-less environment, such as the Kindle Fire tablet).  The app doesn't have to be registered on Google Play to be eligible for AdMob.  Likewise for iOS apps, which themselves aren't on the Play store :) You can even go on to your AdMob web interface, generate an ad unit ID, plug it in an offline app, and see ads serve (although that has no monetary advantage to speak of). 
I could not test yet what happens on regular Android without Play Services (such as an AOSP install).
The implementation should still work, for the reason immediately above.  Just that without a local copy of Google Play services, you will be missing out on updates if you don't regularly recompile your app against the latest Play services version.
I tried in the Android emulator but it seems that the standalone AdMob client lib is hardcoded to always serve test ads in the emulator, even if the app doesn't explicitly call builder.addTestDevice(AdRequest.DEVICE_ID_EMULATOR).
We have existing work to address this, so that you can see live ads when making a request from the simulator.
I did not try using mediation yet, but I doubt it will have an effect (why would case 2 work then ?)
I also did not try to upgrade the Google Play Service client lib to the latest rev 29 version (I'm using rev 27 currently), in
case if fixes this issue.
The purpose of mediation is to provide our users with more ad networks to choose from (as opposed to solely AdMob).  Hopefully with more ad sources, there might be a creative that satisfies the condition for which currently there might not be inventory.  As I said, all of the ad serving logic is server-side, so the SDK itself doesn't have influences over that.  The SDK simply initiates an ad request from your devices (by the way, if you have set any targeting and/or frequency capping, then you might see no fill more often since the ad pool is selected/restricted), and parses the ad response returned from the ad server.  The server has a number of ad serving logic constraints in place that evaluate various factors (e.g. screen sizes, device OS, device form factor).  If it determines an ad cannot satisfy a particular environment, it might not return an ad, resulting in the so-called "no fill" you are seeing.

Let us know if you have additional questions,

Vu Chau
Mobile Ads SDK Team

b0b

unread,
Apr 27, 2016, 9:07:00 AM4/27/16
to Google Mobile Ads SDK Developers
I still have this issue to this day.

I have an app for which I generate 2 APK under different package names (say: packagnename1, packagename2) from 99% the same source code,
both showing banners at the same location in app.

packagnename1 is very popular with > 1 million downloads, distributed via Google Play
packagnename2 is distributed via the Amazon appstore, whith way less downloads. It runs on FireOS or any Android device having the Amazon Underground app (which is also the Amazon appstore).

The only combination of (OS, package) that refuse to display ANY Admob ad (always returning 'no fill from ad server')
is (FireOS, packagnename2). That is: the amazon APK version running on a Kindle Fire tablet.

All other cases show ads:

- (Google Android, packagename1)
- (Google Android, packagename2)
- (FireOS, packagename1)

It's pretty much like if Admob is denying server side all ads requests for the combination (FireOS, packagnename2).
I'm not using mediation but it would not help since (FireOS, packagename1) shows ads just fine and it is the same app that packagename2 with the major difference being the different package name.
Who should I contact at Admob to troubleshoot that ?

Vu Chau (Mobile Ads SDK Team)

unread,
Apr 27, 2016, 2:27:28 PM4/27/16
to Google Mobile Ads SDK Developers
Hi Michael,

Thanks again for the explanation.  Given the situation, it'd be best to speak with the folks over at Product Support so that they can look into this for you.  There might be some issues with the package name itself.

Vu Chau
Mobile Ads SDK Team

Reply all
Reply to author
Forward
0 new messages