Admob Interstitial not showing on iPhone. They are being replaced by normal banners.

It seems that I found the solution: probably I should use package.loaded[“ads”] = nil between two ‘require’ calls to load ads module twice.

Hi @gmer76,

This seems like a logical method, but I haven’t tested it yet to confirm. You may also want to separate these two requires by a bit of time in your actual app, just in case the garbage collector needs a few cycles to clean up after itself before the next require on the same module.

Best regards,

Brent

Can someone confirm the above method with two requires and  package.loaded[“ads”] = nil between them works ?

I tried but it seems always the first listener is called :frowning:

Not to the the one to play difficult here, but I just used the AdMob sample app and put in this block of code:

local function changeAds() ads.hide() ads.show("interstitial", {x = 0, y = 0} )end

hmmmm cut off the rest of my answer. Then at the bottom where it called it’s showAd function:

 showAd( "banner" ) timer.performWithDelay(15000, changeAds, 1)

I got a banner, then 15 seconds later It hid and I got the interstitial. One AppID, one inclusion of the ads module. Am I missing something? I don’t remember seeing anything in the AdMob portal where I selected what ad type to get. This looks like it works like it supposed to.

Rob

Rob,

admob requires to have a separate AppID for banner and for interstitial.

So we have to be able to call the ads.init twice.

I use this workaround and It works for me. In AdMob console I have different requests for two AppIDs.

Thank you for confirming.

Does the banner and interstitial call two separate listeners? (this seems not working for me)

Is this the right way? Still can’t get two listeners to work.

adsBanner = require "ads" package.loaded["ads"] = nil adsFull = require "ads" adsBanner.init( "admob", "ca-app-pub-xxxx", adListenerNative ) adsFull.init( "admob", "ca-app-pub-yyyy", adListenerNativeFull )  

Sorry, I didn’t check listeners in my case. Just checked admob impressions.

I would like to implement a fall-back strategy if there is no ads from admob.

But if same listener is always called, there is no way to determine if the banner or interstitial failed :frowning:

Another question:

Does the app has to be live to get data in the admob dashboard ?

To answer myself: No.

I got the request/impression data but only for banner. Obviously the interstitial is sent with the banner AppID :frowning:

Why is this not working for me? Any idea, please…

Unfortunatelly the method I  mentioned above (using package.loaded[“ads”] = nil) doesn’t work.

After publishing the app I discovered that all requests go to the second AppId of AdMob.

So the question is still open.

Dear Corona guys, do you have plans to fix this issue? Thank you.

Thank you for this info. I was thinking I am doing something wrong.

Yes, this is a BIG issue, not being able to use banners and interstitials togehter for admob.

I am afraid we will not get a fix soon…

Hi Brent,

Interstitial ads from AdMob seems to be working in latest Corona SDK build. But I  faced with another problem:

I have two different ids from Admob, first is for normal banner ad, second for interstitial.

So I init both of them in one module:

[lua]
adsBanner = require “ads”

adsInterstitial = require “ads”

local appID1 = “my_id1”

local appID2 = “my_id2”

local provider = “admob”

adsBanner.init( provider, appID1, adListener )

adsInterstitial.init( provider, appID2, adListener1 )
[/lua]

But AdMob console tells me that all requests (banner and interstitial) go from the first ID.

Could you help me to resolve it?

It seems that I found the solution: probably I should use package.loaded[“ads”] = nil between two ‘require’ calls to load ads module twice.

Hi @gmer76,

This seems like a logical method, but I haven’t tested it yet to confirm. You may also want to separate these two requires by a bit of time in your actual app, just in case the garbage collector needs a few cycles to clean up after itself before the next require on the same module.

Best regards,

Brent

Can someone confirm the above method with two requires and  package.loaded[“ads”] = nil between them works ?

I tried but it seems always the first listener is called :frowning:

Not to the the one to play difficult here, but I just used the AdMob sample app and put in this block of code:

local function changeAds() ads.hide() ads.show("interstitial", {x = 0, y = 0} )end

hmmmm cut off the rest of my answer. Then at the bottom where it called it’s showAd function:

 showAd( "banner" ) timer.performWithDelay(15000, changeAds, 1)

I got a banner, then 15 seconds later It hid and I got the interstitial. One AppID, one inclusion of the ads module. Am I missing something? I don’t remember seeing anything in the AdMob portal where I selected what ad type to get. This looks like it works like it supposed to.

Rob

Rob,

admob requires to have a separate AppID for banner and for interstitial.

So we have to be able to call the ads.init twice.