iOS开发——高级技术&广告功能的实现

广告功能的实现

 

iPhone/iPad的程序,即使是Free的版本,也可以通过广告给我们带来收入。前提是你的程序足够吸引人,有足够的下载量。
这里,我将介绍一下程序中集成广告的方法。主要有两种广告iAd和AdMob。(还有其他多种可被植入的广告SDK,这里就不都一一介绍了)
一:iAd
 

从iOS 4开始,Apple增加了叫做 iAd 的架构,通过它我们可以在程序中提供Apple的广告服务。Apple会支付给开发者60%的广告收入。
iAd Framework中有例程,我们可以下载学习。这里,把简单的步骤说明一下 :
追加iAD Framework
1:首先,在Xcode的[Frameworks]中添加[iAd.framework]。
 

2:创建ADBannerView
广告的显示是在一个叫做ADBannerView的窗口中的。通过控制这个窗口可以控制广告的显示/隐藏。ADBannerView和一般的UIView没有什么两样,将其作为某个画面的subView,然后通过「frame」控制其显示的位置,大小。一般情况下,缺省iPhone上的话,竖屏是:横320pt, 竖50pt;横屏是:横480pt, 竖32pt。
下面的程序显示了ADBannerView的初始化过程,以父窗口的viewDidLoad中实现为例。

 1 - (void)viewDidLoad {

 2 

 3 ……【省略】……

 4 

 5     // 初始化ADBannerView

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

 7     adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;

 8     // 登陆ADBannerView的delegate,这里我们设定其父窗口自己

 9     adView.delegate = self;

10     // 在父窗口下方表示

11     adView.frame = CGRectOffset(adView.frame, 0, self.view.frame.size.height - self.adView.frame.size.height);

12     // 添加到父窗口中

13     [self.view addSubview:adView];

14 }


3:接下来,我们来实现ADBannerView的delegate。这里可以实现在父窗口的UIViewController子类中,也可以单独写一个ViewController。这里面实现了ADBannerView广告的读取,错误处理,全画面表示等delegate的处理设定。下面实现在父窗口的ViewController中。

1 #import <UIKit/UIKit.h>

2 #import <iAd/iAd.h>

3 

4 @interface XXXViewController : UIViewController<UITextFieldDelegate, ADBannerViewDelegate> {

5 

6 ……【省略】……

7 }


4:如上所示,这里增加了「ADBannerViewDelegate」protocol的实现。接下来看看都有哪些delegate接口。

 1 // 广告读取过程中出现错误

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

 3     // 切换ADBannerView表示状态,显示→隐藏

 4     // adView.frame = CGRectOffset(adView.frame, 0, self.view.frame.size.height);

 5 }

 6 

 7 // 成功读取广告

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

 9     // 切换ADBannerView表示状态,隐藏→显示

10     // adView.frame = CGRectOffset(adView.frame, 0, self.view.frame.size.height - adView.frame.size.height);

11 }

12 

13 // 用户点击广告是响应,返回值BOOL指定广告是否打开

14 // 参数willLeaveApplication是指是否用其他的程序打开该广告

15 // 一般在该函数内让当前View停止,以及准备全画面表示广告

16 - (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave {

17     NSLog(@"bannerViewActionShouldBegin:willLeaveApplication: is called.");

18 }

19 

20 // 全画面的广告表示完了后,调用该接口

21 // 该接口被调用之后,当前程序一般会作为后台程序运行

22 // 该接口中需要回复之前被中断的处理(如果有的话)

23 - (void)bannerViewActionDidFinish:(ADBannerView *)banner {

24     NSLog(@"bannerViewActionDidFinish: is called.");

25 }

5:上都实现之后,我们来看看iAd广告的效果。

 

二:AdMob

AdMobAdMob是另一家移动电话广告市场,现在已被Google收购。借助AdMob, 谷歌计划将其网络搜索主导地位从电脑平台扩展向手机平台。正因为AdMob现在是Google的了,所以在Android上得到广泛的应用,不过在iPhone上也是同样可以使用的。下面就介绍一下使用方法。其实步骤很简单:在AdMob上注册用户→登陆你的程序→得到程序固有的Publisher ID→下载并在程序中组入相应代码。登陆首先注册用户


注册并登陆之后,需要登记你准备添加广告的程序(这里,即使程序还没有开发完毕也没有关系)。点击下图marketplace→添加site/Application


选择iPhone/iPad程序,如果是Android的话就选择Android应用程序。


接下来填写程序的详细信息。


其中关于程序的URL的填写,如果程序已经发布,那么填写App Store上的URL,否则随便先填一个,以后可以修改。接下来就可以得到程序的Publisher ID,其使用方法会在下面介绍。

你可能感兴趣的:(ios开发)