65.9K
CodeProject 正在变化。 阅读更多。
Home

为应用添加 iAds

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2012年11月1日

CPOL

5分钟阅读

viewsIcon

12026

《iOS 实战》的章节摘录。

iOS 实战

Bear Cahill

总的来说,集成到各种系统中似乎是技术发展的一个重要领域,尤其是在移动领域。越来越多的应用程序允许你发布到 Twitter,Facebook 应用可以与你的联系人同步,ShareKit 可以让你与各种在线选项集成。iAds 是集成开发的一个不断增长的领域。本文基于 iOS 实战 的第 10 章,作者 Bear Cahill 将展示如何在应用程序中添加 iAds。

您可能还对以下内容感兴趣…

广告并非一种新颖的赚钱方式。它甚至对移动应用来说也不是新鲜事物。然而,苹果的做法有所不同,因为你的应用程序的分发者本身也是广告商(某种程度上——他们可能不直接进行广告宣传,但他们是提供广告和促成交易的平台)。

在我们的例子中,我们的应用程序实际上并不怎么需要销售,因为它做的事情与 iTunes 差不多。而且,我们没有提供任何应用内购买给用户。所以,让我们添加广告,看看是否能以此盈利。

你可能无法以 0.99 美元的价格销售你的应用程序,但如果你能从一个用户那里获得 20 次 0.10 美元的收入,你就做得更好了。让我们看看如何为我们的应用程序添加 iAds。

技术 1:配置 iTunes 以支持 iAds

与其他一些应用程序的特殊功能(如 GameCenter、应用内购买、Apple 推送通知)一样,iAds 需要在 iTunes Connect 中进行一些在线配置,但并不复杂。

问题

我们需要在 iTunes Connect 中配置我们的应用程序以包含 iAds。

解决方案

我们只需要登录 iTunes Connect 并为我们的应用程序启用 iAds。

讨论

这并不复杂,但至关重要。如果你没有为你的应用程序启用 iAds,它将不会显示任何广告。在 Provisioning Portal 中,创建一个新的 App ID。然后,登录 iTunes Connect 并点击你的应用程序进行管理。点击“设置 iAd 网络”按钮(参见图 1)。

图 1 iTunes Connect 允许你为应用程序设置 iAd 网络

在 iAds 页面上,选择你的目标受众年龄,然后点击“启用 iAds”(参见图 2)。

图 2 在 iTunes Connect 中选择目标受众年龄并启用 iAds

你可能需要检查 iTunes Connect 中的合同区域,以确保你已签署所有必要的协议。无论如何,定期检查这是一个好主意。我有时会遇到客户询问为什么他们的应用程序不再出现在 AppStore 中。我做的第一件事就是让他们登录 iTunes Connect,看看是否有任何新的或已更新的合同需要同意。现在,我们已经在 iTunes Connect 中设置了 iAds,让我们将其添加到应用程序中。

技术 2:为应用程序添加 iAds

为应用程序添加 iAds 就像添加一个普通的视图一样。在 Interface Builder 中,有一个 ADBannerView,你可以将其拖放到你的项目中。

问题

我们需要将 iAds 添加到我们的项目中并进行相应的处理。

解决方案

在 UI 编辑器中,我们将一个 ADBannerView 添加到我们的 UI 广告区域。在代码中,我们将处理回调方法,以便在没有加载广告时隐藏广告视图。

讨论

打开 *RootViewController.xib* 文件。由于我们的图片 artwork 相对较小,我们不需要 UIWebView 那么大。我们将这部分空间用于广告。将 Web 视图的顶部向下拖动以留出一些空间,然后在此处拖放一个 ADBannerView(参见图 3)。

图 3 在我们的 Web 视图 UI 中拖放一个 ADBannerView 控件

对于代码,请确保添加 iAd.Framework,并在 *RootViewController.h* 中为 ADBannerView 添加一个 outlet,以便与 Interface Builder 连接。

在头文件中声明 `RootViewController` 实现 `ADBannerViewDelegate` 协议。另外,声明一个布尔变量 `hidingAdBanner`。

当没有广告显示时,我们希望隐藏 ADBannerView 控件。一个根据传入的参数和当前状态来隐藏或显示广告横幅视图的方法将对此有所帮助(参见列表 1)。

列表 1 通过移动来隐藏 AdBanner 的方法

offscreen with animation
-(void)hideAdBanner:(bool)hideIt;
{
    if ((hideIt && hidingAdBanner)
        || (!hideIt && !hidingAdBanner))
        return;                                         #1
 
    hidingAdBanner = hideIt;                            #2
    
    [UIView beginAnimations:nil context:nil];
 
    int adHeight = adBanner.frame.size.height;
    CGRect r = adBanner.frame;
    r.origin.y -= adHeight;                             #3
    adBanner.frame = r;
 
    r = webView.frame;
    r.origin.y -= adHeight;
    r.size.height += adHeight;                          #4
    webView.frame = r;
 
     [UIView commitAnimations];                        #5
}
#1 Not needed
#2 Sets flag
#3 Moves banner
#4 Taller Webview
#5 Animates it

ADBannerView 有几个委托方法。在 Interface Builder 中,将 ADBannerView 的代理设置为 `RootViewController`。我们关注两个回调方法:广告加载时和广告加载失败时。

当应用程序启动时,我们可以调用 `hideAdBanner` 并传入 YES,以便在没有加载广告时横幅广告处于视图之外。当广告加载时,我们可以再次调用它并传入 NO。如果广告加载失败,我们可以再次调用它并传入 YES(参见列表 2)。

列表 2 广告失败时调用 hideAdBanner 并传入 YES

to load and NO when ads load
- (void)bannerView:(ADBannerView *)banner
    didFailToReceiveAdWithError:(NSError *)error
{
    [self hideAdBanner:YES];
}
 
- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
    [self hideAdBanner:NO];
}

在模拟器中,广告将从 Apple 服务器加载测试广告。这是了解代码是否正常工作的可靠方法。有时广告会加载失败,这有助于测试(也许是故意的?)。当应用程序在 AppStore 中启动时,它将加载真实广告。

摘要

iTunes Connect 提供了报告功能,让你能够了解你的应用程序在广告加载、显示、用户点击和收入方面的表现。在 Provisioning Portal、Apple Developer 网站、iOS 论坛以及许多其他地方也有大量有用的信息。我鼓励你去探索,看看人们是如何解决问题并分享解决方案的,并尽可能多地学习。同时,不要害怕提问。iOS 开发者们通常非常乐于助人。

您可能还会对以下 Manning 图书感兴趣:

创建 iPhone 应用
Lou Franco

快速简便的 iPhone 编程
Bintu Harwani

Objective-C 基础
Christopher K. Fairbairn、Johannes Fahrenkrug 和 Collin Ruffenach

© . All rights reserved.