ADBannerView 的基本使用方法

本范例只着重在如何使用 ADBannerView 并没有 iAD 的相关设定与申请流程,至于其他行动广告的部份大家可以参考行动广告 Banner!让你赚大钱!一文。

 

 首先汇入 iAD Framework,并引用其标头档,Xcode 4 Framework 汇入方式可以参考 Xcode 4 新增 Framework 的方法一文。

 

 

C代码   收藏代码
  1. #import <iAd/iAd.h>  
 

 接着在要使用此物件的类别上设定  代理,并建立一个 ADBannerView 型态的物件。

C代码   收藏代码
  1. @interface AdBannerViewViewController : UIViewController  {  
  2. ADBannerView *bannerView;  
  3. }  
  

 在功能方面,我们希望 ADBannerView 能够与画面的呈现方式一致(直立与倾置),并且在 ADBannerView 准备好时能自动弹出显示,使用者也能自行切换是否要显示此 ADBannerView。

 

 针对上述这些功能对 ADBannerView 进行初始化的动作,其程式码如下。

C代码   收藏代码
  1. //自定义的函式 Banner初始化(以画面直立)  
  2. - (void)initializeBanner {  
  3.   
  4. //以画面直立的方式设定Banner于画面底部  
  5. bannerView = [[ADBannerView alloc]initWithFrame:CGRectMake(0.0, 430.0, self.view.frame.size.width, 50.0)];  
  6.   
  7. //此Banner所能支援的类型  
  8. bannerView.requiredContentSizeIdentifiers = [NSSet setWithObjects:ADBannerContentSizeIdentifierPortrait, ADBannerContentSizeIdentifierLandscape, nil];  
  9.   
  10. //目前的Banner 类型  
  11. bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;  
  12.   
  13. //设定代理  
  14. bannerView.delegate = self;  
  15.   
  16. //无法按下触发广告  
  17. bannerView.userInteractionEnabled = NO;  
  18.   
  19. //设定偏位移量  
  20. bannerView.frame = CGRectOffset(bannerView.frame, 0, 50);  
  21.   
  22. [self.view addSubview:bannerView];  
  23. }  
 

 现在我们有了一个 ADBannerView,不过他的目前因为偏移量的关系在画面之外,暂时无法看到,所以下面程式码使用动画的方式将 ADBannerView 移动到画面内,制作出类似弹出的效果。

C代码   收藏代码
  1. - (void)bannerViewAnimation {  
  2.   
  3. //动画设定  
  4. [UIView beginAnimations:@"BannerViewAnimation" context:NULL];  
  5.   
  6. //以userInteractionEnabled状态排判断bannerView是否在画面内  
  7. if (bannerView.userInteractionEnabled) {  
  8. bannerView.frame = CGRectOffset(bannerView.frame, 0, 50);  
  9. }   
  10. else {  
  11. bannerView.frame = CGRectOffset(bannerView.frame, 0, -50);  
  12. }  
  13.   
  14. //开始动画  
  15. [UIView commitAnimations];  
  16.   
  17. //将userInteractionEnabled做反向设定  
  18. bannerView.userInteractionEnabled = !bannerView.userInteractionEnabled;  
  19. }  
 

 上述程式码使用 userInteractionEnabled 这个参数来当作判断 ADBannerView 是否存在于画面内的依据,并且使用类似开关的技巧,每一次执行该函式都会得到一个反向的结果。由于我们希望 ADBannerView 准备好时会自动弹出来,以及使用者也可以自行切换它,所以必须在下列两个事件中呼叫上述函式。

C代码   收藏代码
  1. //使用者按钮事件  
  2. - (IBAction)onButtonPress:(id)sender {  
  3. [self bannerViewAnimation];  
  4. }  
  5.   
  6. //当ADBannerView完成读取广告时会触发的事件  
  7. - (void)bannerViewDidLoadAd:(ADBannerView *)banner {  
  8. [self bannerViewAnimation];  
  9. }  
 

 现在还剩下最后一个功能,就是 ADBannerView 能够与画面的呈现方式一致(直立与倾置),我们可以使用下列函式来重新设定 ADBannerView 的位置与他的类型。

C代码   收藏代码
  1. //画面转动时呼叫的内建函式  
  2. - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {  
  3.   
  4. //还原bannerView预设值  
  5. bannerView.userInteractionEnabled = NO;  
  6. bannerView.frame = CGRectOffset(bannerView.frame, 0,0);  
  7.   
  8. //判断画面是否倾置  
  9. if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {  
  10. bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierLandscape;  
  11. bannerView.frame = CGRectMake(0.0, 288.0, self.view.frame.size.width, 32.0);  
  12. }  
  13. else {  
  14. bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;  
  15. bannerView.frame = CGRectMake(0.0, 430.0, self.view.frame.size.width, 50.0);  
  16. }  
  17.   
  18. //重新设定偏移量  
  19. bannerView.frame = CGRectOffset(bannerView.frame, 0, 50);  
  20. }  
 

 最后,不要忘记在程式进入点引用 ADBannerView 初始化函式,并在对应的函式中释放其记忆体。

C代码   收藏代码
  1. - (void)viewDidLoad  
  2. {  
  3. [super viewDidLoad];  
  4. [self initializeBanner];  
  5. }  
 
C代码   收藏代码
  1. - (void)dealloc  
  2. {  
  3. [bannerView release];  
  4. [super dealloc];  
  5. }  
 

 另外下面提供几个跟 ADBannerView 有关的内建函式。

C代码   收藏代码
  1. //ADBannerView发生错误时会触发  
  2. - (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {}  
  
C代码   收藏代码
  1. //按下广告时会触发的函式  
  2. -(BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave {   
  3.   
  4. //这里可以放置暂停你应用程式的程式码  
  5. return YES;  
  6. }  
  
C代码   收藏代码
  1. //重广告中按下返回应用程式按钮时所触发的函式  
  2. - (void)bannerViewActionDidFinish:(ADBannerView *)banner {  
  3. //这里可以放置重启你应用程式的程式码  
  4. }  
 

 ps:在测试 ADBannerView 必须要连上网际网路才行,有时候测试用的 iAD 会因为连线烦繁忙等问题无法取得测试用广告,可能需要多执行几次。

 

 

 

来源:

http://furnacedigital.blogspot.com/2011/09/adbannerview.html

 

参考:

http://www.yifeiyang.net/iphone-development-skills-of-the-articles-published-5-add-an-ad-in-the-program/

 

 

你可能感兴趣的:(ADBannerView 的基本使用方法)