iAds not refreshing

My app was just released yesterday, and this is my first time using iAds… so I could use a little help.

My app displays the same banner ad when something does display.  Other times, no ads display at all.  In both cases, there is no refresh is seems.

I followed the instructions here.  Shouldn’t the iAds network refresh automatically from the time ads.show() is called?

Can someone confirm if I am doing this correctly?   I am not sure if it is something I did, or if there is some issue with the iAds network.  Everything seemed to be working ok during testing.

thanks!

More info…

Analytics is reporting this message:

The operation couldn’t be completed. Ad inventory unavailable

Anyone?  Is this something out of my control?

I can really use an answer… can someone who has iAds experience, especially someone at CL please help.

I asked Apple why I am only receiving 1 ad, and sometimes no ads.  Here is their response…

We see that your app is generating few ad requests.  We need to see more ad

requests so that the iAd Network can attempt to fill them with an ad. 

 

I have no filters assigned.  Am I reading this response correctly that my app is not attempting iAd requests?  Doesn’t ad.show() handle this internally?  Do I need to keep calling ads.show() to request ads?  I am following the sample app and online API docs and I do not see more than 1 call to ads.show().

Or is there a problem with the daily build?  I am 2013.1135, but will update to the latest soon when I release an update.

Anyone?  Please?

–John

Apple’s iAds are notorious for low fill rates.  With limited inventory, they are going to give their ads to apps that generate better opportunities for creating click thru’s.  They are saying your app isn’t generating enough ad requests.  I don’t know what their definition of enough is. 

Do you have any analytics to say how many requests you are making? 

Do you have any code in your iAds listener call back that watches for successful ad delivery or failed ad delivery?  See:

http://docs.coronalabs.com/api/library/ads/init.html

if event.isError is false, you should have gotten an ad, if not you will have a reason why.

According to our docs on ad.show() :

http://docs.coronalabs.com/api/library/ads/show.html

There are these notes:

  • The iAds provider has known issues on iOS6; the banners begin displaying
    after some delay from the startup, typically 30-60 seconds.

iAds supports the following ad types on all iOS devices:

  • “banner”
  • iAds supports the following ad banner type only on iPad:
    • “interstitial”

and for rotating ads: 

interval (optional)

Number. The ad refresh time (in seconds). Defaults to 10 for InMobi. Defaults to 60 for inneractive. _ Not applicable for iAds _.

which means you are a Apple determines rotation if any.   You should only need to call ads.show() once while you want ads on the screen.  When you no longer want to receive ads, call ads.hide().

It’s odd that you’re getting one and no more.  Can you perhaps post your build.settings for us to see along with your ad.init() and ad.show() calls?

Rob,

Thanks for your reply…

Here is my build settings:

[lua]

settings = {

    plugins = {

        – key is the name passed to Lua’s ‘require()’

        [“CoronaProvider.ads.iads”] =

        {

            – required

            publisherId = “com.coronalabs”,

        },       

    },

    

    orientation = {

        default = “portrait”,

        supported = { “portrait”, }

    },

    iphone = {

        components = {},

        

        plist = {

            CFBundleDisplayName = “A-B Asteroids”,

            UIApplicationExitsOnSuspend = false,

            UIStatusBarHidden = false,

            UIPrerenderedIcon = true, – set to false for “shine” overlay

            

            FacebookAppID = “xxxxxxxxxxxxxxxxxx”,

            CFBundleURLTypes = {

                {

                    CFBundleURLSchemes = {

                        “fbxxxxxxxxxxxx”,

                    }

                }

            },

            CFBundleIconFile = “Icon.png”,

            CFBundleIconFiles = {

                “Icon.png”,

                “Icon@2x.png”,

                “Icon-72.png”,

                “Icon-Small-50.png”,

                “Icon-Small.png”,

                “Icon-Small@2x.png”,

            },

        }

    },

}

[/lua]

I am using storyboard.  In createScene, I use this to init:

[lua]

ads.init(“iads”, myAppID, adsListener)

[/lua]

In willEnterScene…

[lua]

ads.show(“banner”, {x = 0, y = 0,})

[/lua]

I also tried the following with the same results…

  1.  I created a 3 line main.lua file with the require ads statement, the above init and the above show call.

  2.  I compiled Corona Labs’ iAds example and substituted my appID in the example code.

Both times, I get 1 ad, then the refresh appear to be attempted, the ad disappears, and no further ads are displayed.  Ever. Unless I exit my scene (which calls ads.hide), and re-enter the scene (which calls ads.show).  I then get 1 more ad and then nothing.

I understand the low fill rate, but 1 ad 1 time seems a bit abnormal.   :slight_smile:

I use Flurry for my analytics, and I log iAd’s error message when isError is true in my listener. I see the following entries over and over again.

[lua]

The operation couldn’t be completed. Ad inventory unavailable

The operation couldn’t be completed. Unknown error

[/lua]

It seems that when one of these errors occurs, no more ads are ever displayed.

I wrote to Apple, and their response was “We see that your app is generating few ad requests”, and then the standard text regarding volume, etc.  Why is my app generating few requests?  Not sure what that means.  I need to ask them a follow-up question to clarify.

I am going to release an update to fall back on another ad network in the event of iAds failure, but this situation is very confusing to me.

I guess I am confused as to why there is no more inventory after 1 ad.  I have no filters defined in iAds.  There must be more than 1 ad in inventory.

I am also confused why this is happening in my app and your sample app.

Any ideas would be helpful.  I am at a loss as to what to check next.

–John

What is your adListener code look like?

I would not call ads.init() inside of a storyboard module.  It should be called from main.lua.  You will still need to require the plugin in each storyboard module where you intended to call ads.show().   The ads are not part of a display group, so they cannot be transitioned on screen, so your best bet is to call ads.show() in your enterScene() function.

Thanks Rob… I will make the changes you suggest.  Unfortunately I am not too confident that this will solve my issue, as I see the same results when I use the test app provided by CL (using my appID).

Here is my adsListener routine… quite simple.  It just logs the response that is returned from iAds when there is a failure.

[lua]

local function adsListener(event)

    if event.isError then 

                analytics.logEvent(“iAd not shown”, {error = event.response})

    end

end

[/lua]

I appreciate your help.  I am having a hard time eliminating causes, which is rather frustrating to say the least.

–John

More info…

Analytics is reporting this message:

The operation couldn’t be completed. Ad inventory unavailable

Anyone?  Is this something out of my control?

I can really use an answer… can someone who has iAds experience, especially someone at CL please help.

I asked Apple why I am only receiving 1 ad, and sometimes no ads.  Here is their response…

We see that your app is generating few ad requests.  We need to see more ad

requests so that the iAd Network can attempt to fill them with an ad. 

 

I have no filters assigned.  Am I reading this response correctly that my app is not attempting iAd requests?  Doesn’t ad.show() handle this internally?  Do I need to keep calling ads.show() to request ads?  I am following the sample app and online API docs and I do not see more than 1 call to ads.show().

Or is there a problem with the daily build?  I am 2013.1135, but will update to the latest soon when I release an update.

Anyone?  Please?

–John

When adding ads.init() to main.lua… how should the listener be implemented inside the storyboard modules?

I wanted to use the listener to look if an add is shown, and if not showing my own ads. Is this possible or how can this be done?

I noticed with a link beneath an ad from Apple you can click through the ad and the link will be active instead the ad. How can this be fixed?

Actually I don’t think I would involve storyboard at all.  Just put your listener in main.lua.  

Keep in mind that any display object that you create that is not part of a storyboard group draws on top of all storyboard layers.  This way you just build your ad in the listener in main.lua and draw it where you want and it will be visible regardless of the storyboard scene.

If you choose to do your ads through a native.newWebView() or such, they also sit on top of any storyboard layer.

Apple’s iAds are notorious for low fill rates.  With limited inventory, they are going to give their ads to apps that generate better opportunities for creating click thru’s.  They are saying your app isn’t generating enough ad requests.  I don’t know what their definition of enough is. 

Do you have any analytics to say how many requests you are making? 

Do you have any code in your iAds listener call back that watches for successful ad delivery or failed ad delivery?  See:

http://docs.coronalabs.com/api/library/ads/init.html

if event.isError is false, you should have gotten an ad, if not you will have a reason why.

According to our docs on ad.show() :

http://docs.coronalabs.com/api/library/ads/show.html

There are these notes:

  • The iAds provider has known issues on iOS6; the banners begin displaying
    after some delay from the startup, typically 30-60 seconds.

iAds supports the following ad types on all iOS devices:

  • “banner”
  • iAds supports the following ad banner type only on iPad:
    • “interstitial”

and for rotating ads: 

interval (optional)

Number. The ad refresh time (in seconds). Defaults to 10 for InMobi. Defaults to 60 for inneractive. _ Not applicable for iAds _.

which means you are a Apple determines rotation if any.   You should only need to call ads.show() once while you want ads on the screen.  When you no longer want to receive ads, call ads.hide().

It’s odd that you’re getting one and no more.  Can you perhaps post your build.settings for us to see along with your ad.init() and ad.show() calls?

Rob,

Thanks for your reply…

Here is my build settings:

[lua]

settings = {

    plugins = {

        – key is the name passed to Lua’s ‘require()’

        [“CoronaProvider.ads.iads”] =

        {

            – required

            publisherId = “com.coronalabs”,

        },       

    },

    

    orientation = {

        default = “portrait”,

        supported = { “portrait”, }

    },

    iphone = {

        components = {},

        

        plist = {

            CFBundleDisplayName = “A-B Asteroids”,

            UIApplicationExitsOnSuspend = false,

            UIStatusBarHidden = false,

            UIPrerenderedIcon = true, – set to false for “shine” overlay

            

            FacebookAppID = “xxxxxxxxxxxxxxxxxx”,

            CFBundleURLTypes = {

                {

                    CFBundleURLSchemes = {

                        “fbxxxxxxxxxxxx”,

                    }

                }

            },

            CFBundleIconFile = “Icon.png”,

            CFBundleIconFiles = {

                “Icon.png”,

                “Icon@2x.png”,

                “Icon-72.png”,

                “Icon-Small-50.png”,

                “Icon-Small.png”,

                “Icon-Small@2x.png”,

            },

        }

    },

}

[/lua]

I am using storyboard.  In createScene, I use this to init:

[lua]

ads.init(“iads”, myAppID, adsListener)

[/lua]

In willEnterScene…

[lua]

ads.show(“banner”, {x = 0, y = 0,})

[/lua]

I also tried the following with the same results…

  1.  I created a 3 line main.lua file with the require ads statement, the above init and the above show call.

  2.  I compiled Corona Labs’ iAds example and substituted my appID in the example code.

Both times, I get 1 ad, then the refresh appear to be attempted, the ad disappears, and no further ads are displayed.  Ever. Unless I exit my scene (which calls ads.hide), and re-enter the scene (which calls ads.show).  I then get 1 more ad and then nothing.

I understand the low fill rate, but 1 ad 1 time seems a bit abnormal.   :slight_smile:

I use Flurry for my analytics, and I log iAd’s error message when isError is true in my listener. I see the following entries over and over again.

[lua]

The operation couldn’t be completed. Ad inventory unavailable

The operation couldn’t be completed. Unknown error

[/lua]

It seems that when one of these errors occurs, no more ads are ever displayed.

I wrote to Apple, and their response was “We see that your app is generating few ad requests”, and then the standard text regarding volume, etc.  Why is my app generating few requests?  Not sure what that means.  I need to ask them a follow-up question to clarify.

I am going to release an update to fall back on another ad network in the event of iAds failure, but this situation is very confusing to me.

I guess I am confused as to why there is no more inventory after 1 ad.  I have no filters defined in iAds.  There must be more than 1 ad in inventory.

I am also confused why this is happening in my app and your sample app.

Any ideas would be helpful.  I am at a loss as to what to check next.

–John

What is your adListener code look like?

I would not call ads.init() inside of a storyboard module.  It should be called from main.lua.  You will still need to require the plugin in each storyboard module where you intended to call ads.show().   The ads are not part of a display group, so they cannot be transitioned on screen, so your best bet is to call ads.show() in your enterScene() function.

Thanks Rob… I will make the changes you suggest.  Unfortunately I am not too confident that this will solve my issue, as I see the same results when I use the test app provided by CL (using my appID).

Here is my adsListener routine… quite simple.  It just logs the response that is returned from iAds when there is a failure.

[lua]

local function adsListener(event)

    if event.isError then 

                analytics.logEvent(“iAd not shown”, {error = event.response})

    end

end

[/lua]

I appreciate your help.  I am having a hard time eliminating causes, which is rather frustrating to say the least.

–John

When adding ads.init() to main.lua… how should the listener be implemented inside the storyboard modules?

I wanted to use the listener to look if an add is shown, and if not showing my own ads. Is this possible or how can this be done?

I noticed with a link beneath an ad from Apple you can click through the ad and the link will be active instead the ad. How can this be fixed?

Actually I don’t think I would involve storyboard at all.  Just put your listener in main.lua.  

Keep in mind that any display object that you create that is not part of a storyboard group draws on top of all storyboard layers.  This way you just build your ad in the listener in main.lua and draw it where you want and it will be visible regardless of the storyboard scene.

If you choose to do your ads through a native.newWebView() or such, they also sit on top of any storyboard layer.

Did you manage to solve the problem?

I encountered the same ones today with my app (in testing). I noticed there are some maintenance going on at iTunes Connect… maybe this has something to do with the “not working” iAds? I can’t see any ads today in my app. Everything worked fine about 2 weeks ago.

Well… yes and no.  It appears that during testing of iAds, Apple throws a few empty ads as a test for you to handle.

Once my app went live, ads were not refreshing, and then after a few days, they started refreshing without me making any changes.  Several factors can make this happen, including number of ads available (although 1 constant ad didn’t seem like normal activity to me), and how much the user seems to use your app.  I noticed that after several days of using my app myself, I was getting more and more ads.

Did you manage to solve the problem?

I encountered the same ones today with my app (in testing). I noticed there are some maintenance going on at iTunes Connect… maybe this has something to do with the “not working” iAds? I can’t see any ads today in my app. Everything worked fine about 2 weeks ago.