AdMob interstitial ads can not show in iOS

Hi,

I got an error like this:

(on iPad Air with iOS version 7.1.2(11D257))

<Google:HTML> Google Mobile Ads SDK: You are currently using 6.8.0 of the SDK. A new version, 6.11.1, is available at http://goo.gl/Zc0BYt . Please consider updating your SDK to get the latest features and bug fixes

and the ads listener got response:

Request Error: No ad to show.

The same code works fine in android.

Can any one help?

BOB

First, the warning from Google.  This is harmless.  Yes we probably should update to 6.11 at some point, but the Engineers have to look at the feature set the version brings as well as the bugs it brings and decides when it is of value to our community to update.  You can ignore this as a cause of any issues.

As for the “Request error: No ad to show”

Either one of two things is going on.  First, there simply may not be any ad inventory to show.  Mobile ad providers are notorious for not having enough inventory for the requests they get.  Ads are generally prioritized to more popular apps and it make take a few more downloads on iOS to get Google’s attention that you need ads.   The other possibility is that you may be passing an invalid Publisher ID (AppID) to the ads.init() call.  You have to have a unique PublisherID  for iOS that’s different than the one for Android and if you’re using both banners and interstitials, you could end up with four total IDs and you have to program your app to use the right one based on platform and ad type desired.

Rob

Rob is correct and this is often my experience with less popular apps I’ve created

As to why this happens?  It’s partially because of a fairly recent phenomenon in the mobile ad space called “realtime bidding”. Realtime bidding is the ability for ad purchasers to bid on available ad space on the ad network’s available app inventory according to certain parameters that lets them fine-tune the type of app or mobile website property they’re targeting.  Admob is one of these networks and you are a “publisher” in their network.  Multiple ad platforms like MoPub and NativeX have realtime bidding platforms that compete for AdMob’s purchaser’s ads, and there are a lot of apps with hundreds of thousands or millions of DAU bidding on these ads.  The wikipedia article on realtime bidding explains this process fairly well: http://en.wikipedia.org/wiki/Real-time_bidding.

And so where does this leave us, the independent developers?  Well it leaves us with a lot of unfilled ad space that we need to plan for, and here are some strategies that can be used in place.

  • If the ad is not available, show another ad provider’s ad (a lot of the ad providers that come with corona have methods to check if an ad has been loaded or not, if not, you can try showing other ads).  Of course this may come with some overhead so you want to do it at points where your app is not doing a lot of heavy calculation (such as the end of a level).
  • Some other ad providers provide REST API integrations, which mean that the lack of corona plugin availability doesn’t stop you from using it, you just communicate with them restfully through Corona’s client-side networking libraries.

Experimentation is definitely the key.  You have to a) guess WHEN a good time to show ads is - b ) determine which placements disturb users the least and result in the most conversions and - c) figure which ad providers provide the best ads for your users and payout for you.

Hi,

  Thanks for the reply.

  I used to get error response from google in other app, message like: 

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

  So I think the “Request error: No ad to show” is not lack of ad inventory.

  But at the “realtime bidding” part. I think there is a possibility. Because my app was not submit to the iTunes store yet.

  Looks like I have to submit it to the store, so I can figure out by the result.

Bob

It could still be an inventory issue.  Google could have different messages being passed back from their Android ads vs. their iOS ads.  Have you verified that you don’t have an ID issue?  No rogue spaces or hidden characters inserted into your strings? You are using the right ones on iOS vs. Android?

Rob

First, the warning from Google.  This is harmless.  Yes we probably should update to 6.11 at some point, but the Engineers have to look at the feature set the version brings as well as the bugs it brings and decides when it is of value to our community to update.  You can ignore this as a cause of any issues.

As for the “Request error: No ad to show”

Either one of two things is going on.  First, there simply may not be any ad inventory to show.  Mobile ad providers are notorious for not having enough inventory for the requests they get.  Ads are generally prioritized to more popular apps and it make take a few more downloads on iOS to get Google’s attention that you need ads.   The other possibility is that you may be passing an invalid Publisher ID (AppID) to the ads.init() call.  You have to have a unique PublisherID  for iOS that’s different than the one for Android and if you’re using both banners and interstitials, you could end up with four total IDs and you have to program your app to use the right one based on platform and ad type desired.

Rob

Rob is correct and this is often my experience with less popular apps I’ve created

As to why this happens?  It’s partially because of a fairly recent phenomenon in the mobile ad space called “realtime bidding”. Realtime bidding is the ability for ad purchasers to bid on available ad space on the ad network’s available app inventory according to certain parameters that lets them fine-tune the type of app or mobile website property they’re targeting.  Admob is one of these networks and you are a “publisher” in their network.  Multiple ad platforms like MoPub and NativeX have realtime bidding platforms that compete for AdMob’s purchaser’s ads, and there are a lot of apps with hundreds of thousands or millions of DAU bidding on these ads.  The wikipedia article on realtime bidding explains this process fairly well: http://en.wikipedia.org/wiki/Real-time_bidding.

And so where does this leave us, the independent developers?  Well it leaves us with a lot of unfilled ad space that we need to plan for, and here are some strategies that can be used in place.

  • If the ad is not available, show another ad provider’s ad (a lot of the ad providers that come with corona have methods to check if an ad has been loaded or not, if not, you can try showing other ads).  Of course this may come with some overhead so you want to do it at points where your app is not doing a lot of heavy calculation (such as the end of a level).
  • Some other ad providers provide REST API integrations, which mean that the lack of corona plugin availability doesn’t stop you from using it, you just communicate with them restfully through Corona’s client-side networking libraries.

Experimentation is definitely the key.  You have to a) guess WHEN a good time to show ads is - b ) determine which placements disturb users the least and result in the most conversions and - c) figure which ad providers provide the best ads for your users and payout for you.

Hi,

  Thanks for the reply.

  I used to get error response from google in other app, message like: 

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

  So I think the “Request error: No ad to show” is not lack of ad inventory.

  But at the “realtime bidding” part. I think there is a possibility. Because my app was not submit to the iTunes store yet.

  Looks like I have to submit it to the store, so I can figure out by the result.

Bob

It could still be an inventory issue.  Google could have different messages being passed back from their Android ads vs. their iOS ads.  Have you verified that you don’t have an ID issue?  No rogue spaces or hidden characters inserted into your strings? You are using the right ones on iOS vs. Android?

Rob