iPhone

iPhone App - iAD 적용

랜썸 2010. 10. 21. 13:16

1. Framework 에 iAd.framework를 추가
2. Target->Get Info->General->Linked Libraries에서 iAd.framework 의 Link 타입을 Required 에서 weak으로 변경
3. project info-> deployment -> iPhone OS deployment target을 iphone OS 3.1.X로


.h

#import <iAd/iAd.h>


@interface FirstViewController : UIViewController <ADBannerViewDelegate>{

...

ADBannerView *bannerView;

BOOL bannerIsVisible;

}


@property (nonatomic, retain) ADBannerView *bannerView;


- (void) createBannerView;


.m

...


- (void)viewDidLoad {

  [super viewDidLoad];

  bannerIsVisible = NO;

  [self createBannerView];

}


- (void)viewDidUnload {

    // Release any retained subviews of the main view.

    // e.g. self.myOutlet = nil;

    [super viewDidUnload];

    if(self.bannerView){

bannerView.delegate = nil;

self.bannerView = nil;

  }

}


- (void)dealloc {

  if(bannerView){

bannerView.delegate = nil;

[bannerView release];

    }

    [super dealloc];

}


- (void) createBannerView{

  if(NSClassFromString(@"ADBannerView")){

     ADBannerView *adView = [[ADBannerView alloc] initWithFrame:CGRectZero];

     adView.requiredContentSizeIdentifiers

[NSSet setWithObjects:ADBannerContentSizeIdentifier320x50,

ADBannerContentSizeIdentifier480x32,

nil];

     adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;

     adView.delegate = self;

     adView.frame = CGRectMake(0, 411, 320, 50); //처음위치. 여기서 멍때리고 있다가.. delegate에서 위치를 잡아준다.

     self.bannerView = adView;

     [self.view addSubview:adView];

     bannerIsVisible = NO;

  }

}


#pragma mark -

#pragma mark iAD delegate

- (void)bannerViewDidLoadAd:(ADBannerView*)banner{

if(!bannerIsVisible)

{

[UIView beginAnimations:@"animateBannerAppear" context:NULL];

banner.frame = CGRectOffset(banner.frame, 0, -50);

[UIView commitAnimations];

bannerIsVisible = YES;

}

}


- (void)bannerView:(ADBannerView*)banner didFailToReceiveAdWithError:(NSError*)error{

if(bannerIsVisible){

[UIView beginAnimations:@"animateAdBannerOff" context:NULL];

banner.frame = CGRectOffset(banner.frame, 0, 50);

[UIView commitAnimations];

bannerIsVisible = NO;

}

}

...


//.m 끝


참고: 
<http://useyourloaf.com/blog/2010/7/13/adding-iads-to-an-application-in-an-afternoon.html>