iAd Integration and Best Practices · iAd Integration and Best Practices Nathan de Vries iOS Apps...
Transcript of iAd Integration and Best Practices · iAd Integration and Best Practices Nathan de Vries iOS Apps...
These are confidential sessions—please refrain from streaming, blogging, or taking pictures
Session 613
iAd Integration and Best Practices
Nathan de VriesiOS Apps and Frameworks
Promotion Revenue
Revenue
Developer Benefits
Core Concepts
Optimizing Ad Performance
Joining iAd App Network
App Integration
Developer Benefits
Core Concepts
Optimizing Ad Performance
Joining iAd App Network
App Integration
Delights your customersDeveloper Benefits
Delights your customersDeveloper Benefits
•High production values
Delights your customersDeveloper Benefits
•High production values• Rich media
Delights your customersDeveloper Benefits
•High production values• Rich media• Seamless integration
Delights your customersDeveloper Benefits
•High production values• Rich media• Seamless integration• Immersive
Delights your customersDeveloper Benefits
•High production values• Rich media• Seamless integration• Immersive• Stay in your app
Preserves privacyDeveloper Benefits
Preserves privacyDeveloper Benefits
World’s best brandsDeveloper Benefits
Developer BenefitsExpanding globally
US CAUK FR DE IT ES AU NZ MXJP
Developer BenefitsExpanding globally
Path to revenueDeveloper Benefits
Path to revenueDeveloper Benefits
70%
Your Share
Easy to implementDeveloper Benefits
Easy to implementDeveloper Benefits
•No additional SDKs
Easy to implementDeveloper Benefits
•No additional SDKs•Up and running with minimal code
Easy to implementDeveloper Benefits
•No additional SDKs•Up and running with minimal code•Great documentation and sample code
Easy to implementDeveloper Benefits
•No additional SDKs•Up and running with minimal code•Great documentation and sample code• Even easier with iOS 7!
Developer Benefits
Core Concepts
Optimizing Ad Performance
Joining iAd App Network
App Integration
Developer Benefits
Core Concepts
Optimizing Ad Performance
Joining iAd App Network
App Integration
iAd app networkCore Concepts
iAd app networkCore Concepts
+Apple Developers YouBrands + +
Ad requestsCore Concepts
Ad requestsCore Concepts
iAd Framework
Ad requestsCore Concepts
iAd Framework
Ad requestsCore Concepts
Ad Request
iAd Framework
Ad requestsCore Concepts
Ad Request
AdsiAd Framework
Fill rateCore Concepts
Ad Request
Ads
Fill rateCore Concepts
Ads Delivered
Ad Requests
Impressions and tap-throughCore Concepts
Tap-through rateCore Concepts
Tap-through rateCore Concepts
Tap-throughs
Impressions
Developer Benefits
Core Concepts
Optimizing Ad Performance
Joining iAd App Network
App Integration
Developer Benefits
Core Concepts
Optimizing Ad Performance
Joining iAd App Network
App Integration
Focus on the customerOptimizing Ad Performance
Focus on the customerOptimizing Ad Performance
•Utility and usefulness
Focus on the customerOptimizing Ad Performance
•Utility and usefulness• Encourage loyalty
Focus on the customerOptimizing Ad Performance
•Utility and usefulness• Encourage loyalty•Network effects
Focus on the customerOptimizing Ad Performance
•Utility and usefulness• Encourage loyalty•Network effects• Results in more requests
Place ads smartlyOptimizing Ad Performance
Place ads smartlyOptimizing Ad Performance
• Recognize high-use areas
Place ads smartlyOptimizing Ad Performance
• Recognize high-use areas•Avoid accidental taps
Place ads smartlyOptimizing Ad Performance
• Recognize high-use areas•Avoid accidental taps•User context is important
Consider customer locationOptimizing Ad Performance
Consider customer locationOptimizing Ad Performance
• Sell to iAd App Network countries
Consider customer locationOptimizing Ad Performance
• Sell to iAd App Network countries• Target your marketing
Consider customer locationOptimizing Ad Performance
• Sell to iAd App Network countries• Target your marketing• Localize your apps
SeasonalityOptimizing Ad Performance
SeasonalityOptimizing Ad Performance
• Consumer spending is seasonal
Jan Feb Mar Apr May June Jul Aug Sep Oct Nov Dec
Cons
umer
spe
ndin
g
SeasonalityOptimizing Ad Performance
• Consumer spending is seasonal• So is advertiser spending
Jan Feb Mar Apr May June Jul Aug Sep Oct Nov Dec
Cons
umer
spe
ndin
g
SeasonalityOptimizing Ad Performance
• Consumer spending is seasonal• So is advertiser spending•Market accordingly:
■ Start of summer■ Back to school■ Holiday seasons
Jan Feb Mar Apr May June Jul Aug Sep Oct Nov Dec
Cons
umer
spe
ndin
g
Ads
Fill-Rate
Tap-Throughs
Impressions
The feedback loopOptimizing Ad Performance
Ads
Fill-Rate
Tap-Throughs
Impressions
The feedback loopOptimizing Ad Performance
Developer Benefits
Core Concepts
Optimizing Ad Performance
Joining iAd App Network
App Integration
Developer Benefits
Core Concepts
Optimizing Ad Performance
Joining iAd App Network
App Integration
Joining iAd App Network
http://itunesconnect.apple.com/
Joining iAd App Network
http://itunesconnect.apple.com/
Complete iAd contract
Enable iAd for your app
Submit your app for review
Developer Benefits
Core Concepts
Optimizing Ad Performance
Joining iAd App Network
App Integration
Developer Benefits
Core Concepts
Optimizing Ad Performance
Joining iAd App Network
App Integration
App IntegrationBanner
Banner
Banner
• Slim device width view
Banner
• Slim device width view• Placed at bottom of content
Banner
• Slim device width view• Placed at bottom of content• Continuous ad loading
Banner
• Slim device width view• Placed at bottom of content• Continuous ad loading• Fullscreen on tap
Banner
• Slim device width view• Placed at bottom of content• Continuous ad loading• Fullscreen on tap• iPhone and iPad support
Three easy stepsBanner
Three easy stepsBanner
1. Link iAd framework
Three easy stepsBanner
1. Link iAd framework2. Import iAd header
#import <iAd/iAd.h>
MyViewController *myViewController = ...myViewController.canDisplayBannerAds = YES;
Three easy stepsBanner
1. Link iAd framework2. Import iAd header3. Configure view controllers
#import <iAd/iAd.h>
MyViewController *myViewController = ...myViewController.canDisplayBannerAds = YES;
Ad load and displayBanner
Root View
• view becomes originalContentView
Ad load and displayBanner
Root ViewWrapped “original content” view
• view becomes originalContentView
•Ad requests sent
Ad load and displayBanner
Root ViewWrapped “original content” view
Ad RequestAd
Unloaded
• view becomes originalContentView
•Ad requests sent
•Banner loads
Ad load and displayBanner
Root ViewWrapped “original content” view
Ad RequestAd
UnloadedLoaded
• view becomes originalContentView
•Ad requests sent
•Banner loads
•Banner moves on-screen and originalContentView resizes
Ad load and displayBanner
Root ViewResized “original
content” view
UnloadedLoaded
Tap-throughBanner
Tap-throughBanner
• Fullscreen ad on tap
Tap-throughBanner
• Fullscreen ad on tap
•Pause media in -viewWillDisappear:
Tap-throughBanner
• Fullscreen ad on tap
•Pause media in -viewWillDisappear:
•Resume media in -viewDidAppear:
Ad unload and hidingBanner
Wrapped “original content” view
Loaded
•Banner moves off-screen
Ad unload and hidingBanner
Wrapped “original content” view
UnloadedLoaded
•Banner moves off-screen• originalContentView resized
Ad unload and hidingBanner
Wrapped “original content” view
UnloadedLoaded
Toggling display on and offBanner
// Game startedviewController.canDisplayBannerAds = NO;
// Game paused, menu showingviewController.canDisplayBannerAds = YES;
Toggling display on and offBanner
•Disable based on app context
// Game startedviewController.canDisplayBannerAds = NO;
// Game paused, menu showingviewController.canDisplayBannerAds = YES;
Toggling display on and offBanner
•Disable based on app context
•Remember to re-enable!
// Game startedviewController.canDisplayBannerAds = NO;
// Game paused, menu showingviewController.canDisplayBannerAds = YES;
Testing integrationBanner
Testing integrationBanner
•Adjust fill rate
Testing integrationBanner
•Adjust fill rate
•Adjust ad refresh rate
Testing integrationBanner
•Adjust fill rate
•Adjust ad refresh rate
•Only affects your apps
Testing integrationBanner
•Adjust fill rate
•Adjust ad refresh rate
•Only affects your apps
DemoBanner Integration
David WilsoniOS Apps and Frameworks
App IntegrationInterstitial
Interstitial
• Immediate fullscreen display
Interstitial
• Immediate fullscreen display• iPad since iOS 4.3
Interstitial
• Immediate fullscreen display• iPad since iOS 4.3• iPhone in iOS 7
Interstitial
Current View Controller Next View Controller
Automatic presentationInterstitial
nextController.interstitialPresentationPolicy = ADInterstitialPresentationPolicyAutomatic;
[currentController.navigationController pushViewController:nextController animated:YES];
Current View Controller Next View Controller
Automatic presentationInterstitial
nextController.interstitialPresentationPolicy = ADInterstitialPresentationPolicyAutomatic;
[currentController.navigationController pushViewController:nextController animated:YES];
nextController.interstitialPresentationPolicy = ADInterstitialPresentationPolicyAutomatic;
[currentController.navigationController pushViewController:nextController animated:YES];
Current View ControllerNext View Controller
Automatic presentationInterstitial
nextController.interstitialPresentationPolicy = ADInterstitialPresentationPolicyAutomatic;
[currentController.navigationController pushViewController:nextController animated:YES];
Single View Controller App
Manual presentationInterstitial
controller.interstitialPresentationPolicy = ADInterstitialPresentationPolicyManual;
(...time passes...)
[controller requestInterstitialAdPresentation];
Single View Controller App
Manual presentationInterstitial
controller.interstitialPresentationPolicy = ADInterstitialPresentationPolicyManual;
(...time passes...)
[controller requestInterstitialAdPresentation];
controller.interstitialPresentationPolicy = ADInterstitialPresentationPolicyManual;
(...time passes...)
[controller requestInterstitialAdPresentation];
Single View Controller App
Manual presentationInterstitial
controller.interstitialPresentationPolicy = ADInterstitialPresentationPolicyManual;
(...time passes...)
[controller requestInterstitialAdPresentation];
controller.interstitialPresentationPolicy = ADInterstitialPresentationPolicyManual;
(...time passes...)
[controller requestInterstitialAdPresentation];
Preparing earlyInterstitial
Preparing earlyInterstitial
•Don’t miss early impressions!
Preparing earlyInterstitial
•Don’t miss early impressions!• Start ad requests early
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
...
[UIViewController prepareInterstitialAds];
...
}
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
...
[UIViewController prepareInterstitialAds];
...
}
Preparing earlyInterstitial
•Don’t miss early impressions!• Start ad requests early
DemoInterstitial Integration
David WilsoniOS Apps and Frameworks
App IntegrationIAB “Medium Rectangle”
IAB “Medium Rectangle”
aaaa===aaaaaaaa=aaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=====
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
IAB “Medium Rectangle”
• Positioned inline baaa===aaaaaaaa=aaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=====
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
IAB “Medium Rectangle”
• Positioned inline• Standardized “IAB” size
baaa===aaaaaaaa=aaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=====
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
250px
300px
IAB “Medium Rectangle”
• Positioned inline• Standardized “IAB” size•Automatic cycling
baaa===aaaaaaaa=aaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=====
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
IAB “Medium Rectangle”
• Positioned inline• Standardized “IAB” size•Automatic cycling• Fullscreen ad on tap
baaa===aaaaaaaa=aaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=====
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
IAB “Medium Rectangle”
• Positioned inline• Standardized “IAB” size•Automatic cycling• Fullscreen ad on tap• Introduced in iOS 6
baaa===aaaaaaaa=aaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=====
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
IAB “Medium Rectangle”
• Positioned inline• Standardized “IAB” size•Automatic cycling• Fullscreen ad on tap• Introduced in iOS 6• iPad only
baaa===aaaaaaaa=aaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=====
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
View creationMedium Rectangle
View creationMedium Rectangle
#import <iAd/iAd.h>
adView = [[ADBannerView alloc] initWithAdType:ADAdTypeMediumRectangle];
adView.delegate = self;
...
@interface MyViewController : UIViewController <ADBannerViewDelegate>
@end
View creationMedium Rectangle
#import <iAd/iAd.h>
adView = [[ADBannerView alloc] initWithAdType:ADAdTypeMediumRectangle];
adView.delegate = self;
...
@interface MyViewController : UIViewController <ADBannerViewDelegate>
@end
View creationMedium Rectangle
#import <iAd/iAd.h>
adView = [[ADBannerView alloc] initWithAdType:ADAdTypeMediumRectangle];
adView.delegate = self;
...
@interface MyViewController : UIViewController <ADBannerViewDelegate>
@end
View creationMedium Rectangle
#import <iAd/iAd.h>
adView = [[ADBannerView alloc] initWithAdType:ADAdTypeMediumRectangle];
adView.delegate = self;
...
@interface MyViewController : UIViewController <ADBannerViewDelegate>
@end
View creationMedium Rectangle
#import <iAd/iAd.h>
adView = [[ADBannerView alloc] initWithAdType:ADAdTypeMediumRectangle];
adView.delegate = self;
...
@interface MyViewController : UIViewController <ADBannerViewDelegate>
@end
Load and displayMedium Rectangle
@implementation MyViewController
...
@end
Unloaded
Load and displayMedium Rectangle
@implementation MyViewController
- (void)bannerViewDidLoadAd:(ADBannerView *)banner{
}
@end
Loaded
Load and displayMedium Rectangle
@implementation MyViewController
- (void)bannerViewDidLoadAd:(ADBannerView *)banner{ [self.view addSubview:banner]; [self.view layoutIfNeeded];}
@end
Loaded
Load and displayMedium Rectangle
@implementation MyViewController
- (void)bannerViewDidLoadAd:(ADBannerView *)banner{ [self.view addSubview:banner]; [self.view layoutIfNeeded];}
@end
Loaded
Tap-throughMedium Rectangle
Tap-throughMedium Rectangle
• Fullscreen ad on tap
Tap-throughMedium Rectangle
• Fullscreen ad on tap
•Pause media in -viewWillDisappear:
Tap-throughMedium Rectangle
• Fullscreen ad on tap
•Pause media in -viewWillDisappear:
•Resume media in -viewDidAppear:
UnloadMedium Rectangle
@implementation MyViewController
...
@end
Loaded
UnloadMedium Rectangle
@implementation MyViewController
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
}
@end
LoadedUnloaded
UnloadMedium Rectangle
@implementation MyViewController
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{ [banner removeFromSuperview]; [self.view layoutIfNeeded];}
@end
Unloaded
UnloadMedium Rectangle
@implementation MyViewController
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{ [banner removeFromSuperview]; [self.view layoutIfNeeded];}
@end
Unloaded
Testing integrationMedium Rectangle
•Adjust fill rate
•Adjust ad refresh rate
Testing integrationMedium Rectangle
•Adjust fill rate
•Adjust ad refresh rate
• Ensure there’s no clipping
Testing integrationMedium Rectangle
DemoMedium Rectangle Integration
David WilsoniOS Apps and Frameworks
App IntegrationPre-Roll Video
Pre-Roll Video
▶ ▶ ▶ ▶
▶ ▶ ▶ ▶
▶ ▶
Pre-Roll Video
•New on iOS 7▶ ▶ ▶ ▶
▶ ▶ ▶ ▶
▶ ▶
Pre-Roll Video
•New on iOS 7• Integrated with media player
▶ ▶ ▶ ▶
▶ ▶ ▶ ▶
Pre-Roll Video
•New on iOS 7• Integrated with media player• Plays before regular video
Pre-Roll Video
• Fullscreen ad on tap
•New on iOS 7• Integrated with media player• Plays before regular video
Pre-Roll Video
• Fullscreen ad on tap• Inline playback supported
•New on iOS 7• Integrated with media player• Plays before regular video
Pre-Roll Video
• Fullscreen ad on tap• Inline playback supported• iPhone and iPad
•New on iOS 7• Integrated with media player• Plays before regular video
Creating and playing Pre-Roll Video
Creating and playing Pre-Roll Video
#import <MediaPlayer/MediaPlayer.h>
#import <iAd/iAd.h>
Creating and playing Pre-Roll Video
#import <MediaPlayer/MediaPlayer.h>
#import <iAd/iAd.h>
moviePlayer = [MPMoviePlayerController new];
moviePlayer.contentURL = [NSURL URLWithString:@”...”];
Creating and playing Pre-Roll Video
#import <MediaPlayer/MediaPlayer.h>
#import <iAd/iAd.h>
moviePlayer = [MPMoviePlayerController new];
moviePlayer.contentURL = [NSURL URLWithString:@”...”];
[moviePlayer playPrerollAdWithCompletionHandler:^(NSError *error) {
// Check if error is non-nil during development
[moviePlayer play];
}];
Creating and playing Pre-Roll Video
#import <MediaPlayer/MediaPlayer.h>
#import <iAd/iAd.h>
moviePlayer = [MPMoviePlayerController new];
moviePlayer.contentURL = [NSURL URLWithString:@”...”];
[moviePlayer playPrerollAdWithCompletionHandler:^(NSError *error) {
// Check if error is non-nil during development
[moviePlayer play];
}];
Creating and playing Pre-Roll Video
#import <MediaPlayer/MediaPlayer.h>
#import <iAd/iAd.h>
moviePlayer = [MPMoviePlayerController new];
moviePlayer.contentURL = [NSURL URLWithString:@”...”];
[moviePlayer playPrerollAdWithCompletionHandler:^(NSError *error) {
// Check if error is non-nil during development
[moviePlayer play];
}];
[self.view addSubview:moviePlayer.view];
[self.view layoutIfNeeded];
Conditional pre-rollPre-Roll Video
Conditional pre-rollPre-Roll Video
if ([user isPaidSubscriber]) {
[moviePlayer play];
} else {
[moviePlayer playPrerollAdWithCompletionHandler:^(NSError *error) {
[moviePlayer play];
}];
}
Conditional pre-rollPre-Roll Video
if ([user isPaidSubscriber]) {
[moviePlayer play];
} else {
[moviePlayer playPrerollAdWithCompletionHandler:^(NSError *error) {
[moviePlayer play];
}];
}
Conditional pre-rollPre-Roll Video
if ([user isPaidSubscriber]) {
[moviePlayer play];
} else {
[moviePlayer playPrerollAdWithCompletionHandler:^(NSError *error) {
[moviePlayer play];
}];
}
Conditional pre-rollPre-Roll Video
if ([user isPaidSubscriber]) {
[moviePlayer play];
} else {
[moviePlayer playPrerollAdWithCompletionHandler:^(NSError *error) {
[moviePlayer play];
}];
}
Preparing earlyPre-Roll Video
Preparing earlyPre-Roll Video
•Don’t miss early impressions!
Preparing earlyPre-Roll Video
•Don’t miss early impressions!• Start ad requests early
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
...
[MPMoviePlayerController preparePrerollAds];
...
}
Preparing earlyPre-Roll Video
•Don’t miss early impressions!• Start ad requests early
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
...
[MPMoviePlayerController preparePrerollAds];
...
}
Tips and gotchasPre-Roll Video
Tips and gotchasPre-Roll Video
•Don’t play content video until ad completes
Tips and gotchasPre-Roll Video
•Don’t play content video until ad completes•Defer notification handling
■MPMoviePlayerReadyForDisplayDidChangeNotification■MPMoviePlayerLoadStateDidChangeNotification
Tips and gotchasPre-Roll Video
•Don’t play content video until ad completes•Defer notification handling
■MPMoviePlayerReadyForDisplayDidChangeNotification■MPMoviePlayerLoadStateDidChangeNotification
•Defer UI customization
DemoPre-roll video integration
David WilsoniOS Apps and Frameworks
Wrapping Up
•New pre-roll video ads
Wrapping Up
Wrapping Up
•New pre-roll video ads•Medium rectangle ads
baaa===aaaaaaaa=aaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=====
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Wrapping Up
•New pre-roll video ads•Medium rectangle ads• Interstitials on iPhone
Wrapping Up
•New pre-roll video ads•Medium rectangle ads• Interstitials on iPhone•New view controller banner APIs
Wrapping Up
•New pre-roll video ads•Medium rectangle ads• Interstitials on iPhone•New view controller banner APIs•Optimize your app’s ad performance
John GeleynseDirector, Technology [email protected]
DocumentationiOS SDK Libraryhttp://developer.apple.com/ios
Apple Developer Forumshttp://devforums.apple.com
More Information
Introduction to iBooks Author Widget and iAd Rich Media Ad Development with iAd Producer 4
Russian HillWednesday 11:30am
Building Advanced iBooks HTML 5 Widgets and iAd Rich Media Ads Russian HillWednesday 3:15pm
Introducing iAd Workbench, The Best Way to Market Your App Russian HillTuesday 3:15pm
Related Sessions
iTunes Connect Lab Services Lab BFriday 10:15am
iAd Technologies Lab Media Lab AThursday 3:15pm
Labs
Internationalization Lab Frameworks Lab BFriday 11:30am