iad integration and best practices · iad integration and best practices nathan de vries ios apps...

Post on 18-Jun-2020

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 Evangelismgeleynse@apple.com

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

top related