昨天我们了解了iOS商业模式的收费策略和使用苹果iAd广告,今天继续跟随南昌网络公司小编学习如何使用谷歌AdMob广告来获取盈利。在一些无法显示iAd广告的国家,使用谷歌的AdMob广告是一个非常不错的选择。
1.注册 AdMob 账号
要为我们的应用添加AdMob广告,首先需要注册AdMob账号。AdMob的主页是https://apps.admob. com/登录时,需要使用谷歌账户。如果没有谷歌账户的话,需要先注册一个谷歌账户,然后再登录。如果是第一次登录,还需要为AdMob填写完整的信息,如图1所示。填写必要而完整的信息后,提交信息就可以了。
图1 AdMob注册页面
2.管理 AdMob 广告
登录成功之后,我们就可以管理应用。选择“获利”标签,进入获利管理页面,如图2所示,点击“通过新应用获利”按钮可以添加应用,此时的界面如图3所示。
图2 添加应用
在图3所示的页面中,可以选择的应用如下所示。
搜索您的应用:适合于已经上线的应用,我们可以在Google Play和iTunes App Store应用商店中搜索。
手动添加您的应用:适合于新创建一个应用。
从您添加的应用中选择:可以从现有的应用选择添加。
这里我们选择“手动添加您的应用”标签,输入应用名称和选择平台,然后点击“添加应用”按钮,此时得到的界面如图4所示。
图3 手动添加应用
图4 为应用添加广告
在图4所示的页面中,可以点击“横幅广告”或“插页式广告”按钮。如果点击“横幅广告”,则进入如图5所示的新建广告单元页面,其中“自动刷新”和“文字广告样式”可以采用默认值,在“广告单元名称”中输入一个具有唯一性的名称,以便日后管理使用,然后点击“保存”按钮,则进入图6所示的页面,此时点击“完成”按钮就创建完广告单元。
图5 新建广告单元
图6 创建后广告单元
创建完成后的页面中会有广告单元ID,这个ID是我们编程时需要的,谷歌会根据这个ID判断是谁投放的广告。
3.AdMob 广告类型
AdMob广告分为:横幅广告和插页广告。
横幅广告像“条幅”一样挂在屏幕上,在屏幕中某一位置占有部分空间。当点击横幅广告时,导航到另外的一个应用或者弹出窗口以呈现广告的细节。点击关闭广告按钮时,可以回到原始的屏幕。无论横屏还是竖屏的情况,横幅广告在不同设备中的尺寸都是固定的,如图7所示。
图7 AdMob横幅广告
AdMob插页广告与横幅广告不同,插页广告可以占用屏幕的全部空间。在应用启动、视频前贴片或游戏关卡加载时显示广告,我们把这种场景称为“启动场景”AdMob插页广告(见图8)。还有一种是在视频播放结束或游戏结束时显示的,我们称之为“结束场景”AdMob插页广告(见图9)。
图8 启动场景的AdMob插页广告
图9 结束场景的AdMob插页广告
4.下载 AdMob Ads SDK
谷歌为开发人员提供了一个帮助网站https://developers.google.com/mobile-ads-sdk/,我们可以在这里下载AdMob Ads SDK。进入下载页面(见图10),其中显示可以下载的SDK有4种。
Android (Google Play)。是使用Android系统需要的SDK,它使用了Google Play服务API,在Android系统中推荐使用这个SDK。
Android (6.4.1 and earlier SDKs)。是使用Android系统需要的SDK,它是给低版的Android系统使用的。
iOS。为iOS平台提供SDK。
Windows Phone 8。为Windows Phone 8平台提供SDK。
图10 AdMob Ads SDK下载页面
这里我们需要下载iOS SDK。
5.配置 AdMob 开发环境
我们首先将下载的AdMob iOS SDK压缩件googlemobileadssdkios.zip解压,内容如下:
GoogleMobileAdsSdkiOS目录
|____Add-ons
|____GADAdMobExtras.h
|____GADAdNetworkExtras.h
|____GADAdSize.h
|____GADBannerView.h
|____GADBannerViewDelegate.h
|____GADInAppPurchase.h
|____GADInAppPurchaseDelegate.h
|____GADInterstitial.h
|____GADInterstitialDelegate.h
|____GADModules.h
|____GADRequest.h
|____GADRequestError.h
|____libGoogleAdMobAds.a
|____README.txt
一般只需要.h文件和.a文件就可以了,而Add-ons目录用于存放插件,例如广告搜索定位等功能。我们需要将用到的.h文件和.a文件添加到Xcode工程中,我的习惯是将这些文件复制到工程目录中,并为其创建一个文件夹,如图11所示。然后会在Xcode中启动该工程,并将该文件夹添加到工程中。
图11 添加.h文件和.a文件
由于AdMob依赖于其他的一些框架,我们需要把这些框架添加到工程中,这些框架包括:
StoreKit.framework
CoreTelephony.framework
SystemConfiguration.framework
MessageUI.framework
MediaPlayer.framework
AdSupport.framework
AudioToolbox.framework
AVFoundation.framework
CoreGraphics.framework
QuartzCore.framework
EventKitUI.framework
EventKit.framework
引入框架后,还需要设置编译参数Other Linker Flags,把它的Debug和Release参数都设置为-ObjC,如图12所示。
图12 设置编译参数Other Linker Flags
配置好后我们就可以编译了,如果前面的设置没有问题,我们应该能够编译成功。
6.AdMob 横幅广告
AdMob横幅广告与iAd横幅广告的概念一样,出现在屏幕中某一位置,占有部分空间,点击广告进入广告详细信息页面。
AdMob也规定了不同的广告尺寸,不同的尺寸是由如下常量定义的。
kGADAdSizeBanner。标准横幅广告,尺寸320×50,适应于iPhone、iPod touch和iPad。
kGADAdSizeLargeBanner。夸大的kGADAdSizeBanner,尺寸320×100。
kGADAdSizeMediumRectangle。矩形广告(Medium Rectangle),可以在iPad设备上使用,广告尺寸是320×250。
kGADAdSizeFullBanner。全栏广告,适用于iPad ,广告尺寸是468×60。
kGADAdSizeLeaderboard。排行榜广告,适用于iPad ,广告尺寸是728×90。
kGADAdSizeSmartBannerPortrait。竖屏智能广告,iPhone和iPod设备竖屏情况下的高度是50,iPad设备竖屏情况下的高度是90。
kGADAdSizeSmartBannerLandscape。横屏智能广告,iPhone和iPod设备横屏情况下的高度是32,iPad设备横屏情况下的高度是90。
由于AdMob是Objective-C编写的,我们需要在工程中添加桥接头文件,并需要在编译参数中设置。在SizeClassSample-Bridging-Header.h中添加如下内容:
#import "GADBannerView.h"
#import "GADBannerViewDelegate.h"
#import "GADRequest.h"
下面的代码是案例工程中ViewController的代码:
上述代码中,第①行定义ViewController中需要声明遵守GADBannerViewDelegate协议。第②行代码定义了GADBannerView类型的属性adBannerView。第③行代码定义常量AdUnitID,指定应用发布者ID。
第④行代码用于创建并初始化广告栏视图,其中createBannerView方法是我们自定义的。在createBannerView方法中,第⑤行代码用于在广告栏视图对象非空的情况下,设置委托对象为nil,第⑥行代码用于将广告栏视图对象从父视图中移除掉。第⑤和⑥行代码对于再次创建并初始化广告栏视图非常重要。第⑦行代码用于创建广告栏视图GADBannerView对象。第⑧行代码用于设置应用发布者ID,第⑨行代码用于设置广告栏视图的委托对象为self,第⑩行代码用于将当前视图控制器作为广告栏根视图控制器。第⑪行代码用于请求广告,其中self.request()语句(Objective-C中是self request)用于获得请求对象GADRequest。
由于在横屏和竖屏切换的时候,需要改变广告栏的大小,因此需要捕获屏幕旋转,这可以通过viewWillTransitionToSize:withTransitionCoordinator:方法实现,见代码第⑫行,该方法是iOS 8新的API。第⑬行代码用于判断横屏情况,也就是宽大于高的情况下,相反如果宽小于高时则是竖屏情况。
第⑭行代码用于定义request方法,其中第⑮行代码用于创建请求对象GADRequest。第⑯行代码用于设置测试设备标识,其中GAD_SIMULATOR_ID是模拟器标识,7740674c81cf31a50d2f92bcdb729f10是我们的iPod touch设备标识。
南昌网络公司小编提示:设置测试设备非常重要,如果你的测试设备标识没有添加到testDevices集合中,在应用运行的时候会在控制台输出该设备的标识,我们需要将这个设备标识复制并添加到testDevices集合中。如果你不添加测试设备标识,而去点击广告,这样谷歌一旦检测出来,你的AdMob广告账号会被封掉。
运行一下看看效果,广告请求成功后会看到如图13所示的广告横幅,点击广告栏即可启动广告详细内容画面。
图13 AdMob横幅广告画面
7.添加 AdMob 插页广告
AdMob插页广告与苹果iAd插页广告比较相似,都是全屏显示,它的应用场景与iAd稍有不同。在应用启动、视频前贴片或游戏关卡加载时显示广告,我们把这种场景称为“启动场景”,这与iAd的“内容显示场景”类似。还有一种是在视频播放结束或游戏结束时显示的,我们称之为“结束场景”。
(1)启动场景
应用启动、视频前贴片或游戏关卡加载时,会弹出模态全屏广告对话框,点击全屏广告左上角的关闭按钮,可以关闭该对话框,如图17-21所示。没有广告时,直接进入②界面(主屏幕界面),如果有广告填充时先启动①(广告界面)进入,我们需要关闭它才能回到②界面(主屏幕界面)。
下面我们将图7所示的插页广告实现一下。首先,参考添加AdMob设置环境。然后,添加桥接头文件AdMobFullScreen1Demo-Bridging-Header.h,其代码如下:
#import "GADInterstitial.h"
案例的主要代码是在ViewController中编写的,具体如下:
上述代码中,第①行说明定义类时需要声明遵守GADInterstitialDelegate委托协议,该协议规定了GADInterstitial 生命周期事件。第②行代码是定义GADInterstitialAd 类型的属性 splashInterstitial 。
GADInterstitialAd是AdMob插页广告视图对象。第③行代码用于创建并初始化插页广告视图对象。第④行代码用于请求广告,其中self.createRequest()语句(Objective-C是self createRequest)用于获得请求对象GADRequest。
第⑤行和第⑧行是GADInterstitialDelegate委托协议方法,其中第⑤行的方法是成功加载广告的方法,第⑥行用于判断广告是否已经加载完成,第⑦行用于呈现广告界面,其中self是当前视图控制器,它也是呈现广告界面的视图控制器。
(2)结束场景
该场景是在视频播放结束或游戏结束时显示广告,它需要有一个触发条件,满足该条件时才弹出模态全屏广告对话框,如图8所示。下面我们将图8所示的插页广告实现一下。首先,参考添加AdMob设置环境。然后,添加桥接头文件AdMobFullScreen2Demo-Bridging-Header.h,相关代码如下:
#import "GADInterstitial.h"
案例的主要代码是在ViewController中编写的。ViewController类定义、属性等的相关代码如下:
在onClick:方法中,第①行代码通过NSTimer开始计划任务,该计划任务是每隔0.1秒调用一次update方法。在update方法中,第②行代码用于判断游戏是否结束(当然这是模拟),NSTimer使用完,就需要使用第③行代码停止计划执行。第④行代码用于实例化GADInterstitial对象。第⑦行代码通过调用createRequest方法获得请求对象发出广告请求。
createRequest方法的代码如下:
下面我们再看看ViewController中有关GADInterstitialDelegate委托的实现代码:
在接收成功的interstitialDidReceiveAd:方法中,需要使用第①行代码模态呈现广告对话框,GADInterstitial对象的presentFromRootViewController:方法需要在成功请求回来后再调用。运行一下,看看是否能呈现广告。
8.为广告提交用户和位置信息
如果广告主能够获得用户信息或位置信息,那么展示给用户的广告会更有针对性。出于对用户隐私的尊重,谷歌要求只能指定以下信息:用户性别、用户生日和位置等。
修改第6节案例中ViewController的createRequest代码,具体如下:
在上述代码中,第①行代码用于设定用户的性别,其中GADGender.Male(Objective-C中是KGADGenderMale)是男性常量。类似地,还有.Female女性常量和.Unknown未知常量。第②行代码用于设置用户的出生信息。
第③行代码用于设置用户的位置信息,其中setLocationWithLatitude:部分用于设置纬度,如39.904667,longitude:部分是经度,如116.408198,这个经纬度是北京的地理坐标,accuracy:部分是水平精度。如果我们得不到经纬度地理坐标,也可以采用地理信息描述方式查询位置,第④行的setLocationWithDescription:方法就可以实现这个目的。
9.搜索广告
AdMob还提供了一些插件来编写更加准确的广告应用,搜索广告就是其中一个。搜索广告用于访问GoogleAdWords广告资源,帮助用户查找他们所需的内容。
搜索广告使用GADSearchBannerView替代GADBannerView。
使用搜索广告时,首先导入Add-ons目录中的Search、DoubleClick和Mediation子目录。注意导入采用组,如图14所示,在Folders中选中Create groups for any added folders单选按钮,这可以使原来目录中的子目录变成工程中的“组”。
图14 导入Add-ons目录
下面我们修改第6节案例中ViewController的代码,主要代码如下:
上述代码中,第①行用于实例化GADSearchBannerView对象,注意不是GADBannerView对象。在request方法中,第②行代码用于实例化GADSearchRequest请求对象,第③行代码用于设置搜索关键词,第④行代码用于获得GADRequest对象,这是通过GADSearchRequest的类方法request返回的。
我们首先了解了iOS中的商业模式,其中收费策略值得广大读者借鉴。然后,我们重点学习了植入广告,其中包括苹果自己的iAd和谷歌的AdMob广告。了解更多相关资讯,欢迎咨询南昌网络公司--百恒网络。百恒网络是一家专业从事南昌网站建设、微信开发、APP开发、网络营销等服务的南昌网络公司,技术过硬,经验丰富。如有任何网站方面的问题,百恒网络随时欢迎大家来电咨询,我们专业为您解答!