Does clicking an iOS iAd pause new ads from being fetched? - ios

When an iAd banner is clicked, and the interactive ad doesn't leave the app, are ads still received by the app while the full screen ad is displayed? Or is receiving new ads suspended at this time?
It doesn't say either way in Apple's docs.
I ask because I want to give the app every chance to optimize the CTR (click-through rate), so I'm wondering if I should stop ads manually like this:
- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner
willLeaveApplication:(BOOL)willLeave {
if(!willLeave) {
[self destroyAdBanner]; // to stop receiving new ads
}
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self createAdBanner]; // start receiving new ads again if not already
}
What is the official approach? An Apple reference would be greatly appreciated.

There is no official documentation that I can find, but from repeated trials after an ad banner is clicked and the full-screen ad appears and waiting for long periods of time, there are no further calls to any of the ad delegate methods until the user interaction terminates. It looks like no new ads are fetched while in user interaction mode.

Related

iAd Interstitial: Determining if ad was shown?

I'm showing interstitials by using destinationVC.interstitialPresentationPolicy = ADInterstitialPresentationPolicy.Automatic before I actually show the destintion view controller.
How am I supposed to detect if an interstitial loaded? I need to know so I can know if I should reset a timer that let's me show interstitials every few minutes.
It's weird - even with 100% fill rate enabled in my developer settings, my interstitial doesn't always show...
I tried implementing ADInterstitialDelegate but it seems interstitialDidLoad doesn't actually execute?
For the fillrate, are you talking about test ads or live ads? iAd has a very low live ads fill rate and is even not supported at all in many countries...
For the delegate, did you assign the delegate e.g.
self.interstitial.delegate = self;
Assign it and do an NSLog for example in the delegate methods like in interstitialDidLoad to test if it s called...
P.S. A timer to fire ads isn t really a good idea... Ads should be fired after an action by a user, at a specific time regarding the app lifecycle / usage and should not interrupt, what would obviously happen if you use a timer...

Adding an alert video for rewarded video ads

I have an iOS app with a button that (when tapped) plays rewarded video ads one after the other. The first times its tapped it plays ads from ad network 1, the second time its tapped it plays ads from ad network 2, and so on.
I want to add an alert that appears when the button is tapped asking the user if he/she are sure they want to play the video - if yes then the video plays, if no then the alert disappears.
Here is the code I currently have:
- (IBAction)freeTenCoins:(id)sender
{
// Try AppLovin.
if ([ALIncentivizedInterstitialAd isReadyForDisplay]) {
NSLog(#"Trying AppLovin");
[ALIncentivizedInterstitialAd show];
[Coins instance].coins += 10;
// Try LeadBolt.
} else {
NSLog(#"Trying LeadBolt");
[AppTracker loadModule:#"video" viewController:self];
}
Can anyone here show me how to show this alert? Any help would be much appreciated.
Actually, the AppLovin SDK has this feature built in.
All you need to do is go to the Manage Applications page, scroll down to the Rewarded Section and turn "Pre-video Modal" to on. We'll show an alert asking if they'd like to view the video, and then act on that. If they choose yes, we'll show an ad on your behalf; if they choose no, we'll notify you via the optional delegate method userDeclinedToViewAd: in ALAdRewardDelegate.
Of course you can also implement this feature yourself using UIAlertController or UIAlertView. This is actually what we do internally in the SDK anyway. This question elaborates more on that subject.

iAd not appear after app released to AppStore

My app "iCals" uploaded to AppStore and the iAd not appear.
In simulator and with TestFlight written in banner "You connected to iAd" but if I download the app from AppStore is not appear the banner.
#synthesize = adBanner = adBanner;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// Make self the delegate of the ad banner.
adBanner.delegate = self;
// Initially hide the ad banner.
self.adBanner.alpha = 0.0;
}
iAd takes a couple of days to process after your app has already been processed and on the app store. If you go to the iAd dashboard you should have a message letting you know that your app is in review for iAd. If your app has only been in the app store for <3-5 days then give it a little more time. You'll still see the green light next to "Live Ads" but there won't be any ads until it's been reviewed.
Check the iAd control panel at https://iad.apple.com. If your app's Ad status is "Live ads", like so:
then everything is working fine, you just aren't getting an ad because there aren't always ads available to show. If you leave the app open for long enough, you should eventually see one.
You can also check other stats such as impression counts and fill rates in the control panel; these will indicate to you how many ads are actually being shown to users (my fill rates have been around 60% lately).
Also, if you don't live in one of the countries on this list, you'll never see any iAds in production.

adding Interstitial into chartboost

so after a week of attempting to load chart boost to my non-arc iOS app in Xcode, I'm gonna start asking some really silly questions.
my code in my appdelegate is:
(void)applicationDidBecomeActive:(UIApplication *)application {
[[CCDirector sharedDirector] resume];
Chartboost *cb = [Chartboost sharedChartboost];
cb.appId = #"530dd707f8975c182ae2c691";
cb.appSignature = #"0d8726e69c911a182b0cefac4eca36f692355725";
// Required for use of delegate methods. See "Advanced Topics" section below.
cb.delegate = self;
// Begin a user session. Must not be dependent on user actions or any prior network requests.
// Must be called every time your app becomes active.
[cb startSession];
[cb showMoreApps];
[cb cacheInterstitial:#"Play Again"];
[cb showInterstitial:#"Play Again"];
// Show an interstitial
[cb cacheInterstitial:#"Highscores"];
[cb showInterstitial:#"Highscores"];
when i start the app, yea i get the test ad appear so thats all good, but i cannot get it to show apps throughout the game or get these interstitials working at all.
so my first question: will the random ad's appear throughout the app(but only when the game is uploaded to the app store and not through test mode)
and secondly, can someone please explain with this showInterstitial locations. I've read many many documentations, even looked through the examples on chart boost, which they only link to buttons rather than to, for example, when i die in the game and then i want an ad to appear.
so can someone explain on here how to implement these interstitial appearance, as my "play again" and "highscores" seem to do nothing(and yes I've added a campaign logic but still, no ad is showing when the player dies and the screen goes to the high score page
few things:
Ads will appear throughout the app, not at random but where you place them.
The locations are simply names for your own reference. You still need to place the showInterstitial code in the right place for it to show when you want in. For instance, when your player dies and you should call [cb showInterstitial:#"play again"]; and when the player navigates to the high score page you call [cb showInterstitial:#"highscores"];.
The location names can be anything: location1, location2 or play again, highscores... it doesn't actually matter. But you should call [cb showInterstitial:#"play again"]; only on play again, and [cb showInterstitial:#"highscores"]; only when players view the high score screen. Once you set all that up in the app, you can turn interstitials on/off via the dashboard.
Finally, you should never call cacheInterstitial and showInterstitial immediately after each other. This can cause a race condition and produce unexpected results. Simply call cacheInterstitial when you bootup, and showInterstitial everywhere else in your app.
If you have any other questions, feel free to email support#chartboost.com
Full disclosure: I work at Chartboost

my iad is still being displayed when I change from one screen to the next

I have successfully implemented iAd into my App just this past week, but when my fill rate was very low I looked into it, and I realize I have a problem. My iAd banner is correclty displayed on the first screen the user sees, and that is the only screen on which the banner ad is displayed by my design. I setup a singleton class to manage the ads, and I'm expanding it to display on additional screens in an upcoming release. However, when I push another view controller to the front that doesn't display ads, my iAd delegate methods:
- (void)bannerViewDidLoadAd:(ADBannerView *)banner
- (void) bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
are still being called every 3 minutes as though the view is active.
Is there a way to temporarily disable iAd from trying to refresh? thanks in advance.
Since I'm not showing ads on all of the pages, I create/release the ad object when my view controller that is showing ads is displayed/not-displayed (and set the delegate to nil), and this prevents any ads/delegate functions on view controllers that are not currently displayed from being displayed.

Resources