iOS广告小科普

来源:互联网 发布:失去才知珍惜的小故事 编辑:程序博客网 时间:2024/04/28 12:43

ios推广基础科普 
 
软文一篇。。不过前六点还都是干货。积累了两年时间,刚入行的可以科普下 转载请注明出处 
一:ios产品推广概况:  
  iOS产品在推广上相对于安卓,操作空间会小一些,推广效果与产品的定位、受众的群体,产品的质量等关系巨大。目前普遍来讲,通过付费推广,获取一个激活用户的成本大概在10RMB左右。  
  最好的推广方式还是根据自己产品的特性,做社会化方式的推广。这样推广周期长,而且还免费。  


二:iOS推广目标:  
 iOS上,榜单效应明显,所以通过各种手段的推广方式,最终目的是提高App在AppStore的排名,增加曝光,从而增加自然下载量。  


三:AppStore排行榜位置与下载量  
AppStore免费总榜位置 日下载量 前20 1W 前10 3W 前5 5W 

 
四:分类榜与免费总榜的位置对比 
1 基本是1:10,也就是说,分类排第一,总榜排第十。分类排20,总榜排200  
2 跟分类榜的热度有关,相对于游戏分类,排第十的,可能在总榜要进前50(游  戏、生活、社交等都是热榜,充满了巨头们的App,竞争激烈)  
3 不同分类榜,对排行有些微加成  
所以App上架时,分类选择对推广效果也有影响 

 
五:App的几个基本状态 按照App状态可分为4种状态 1.应用首发状态 2.应用限免状态 3.应用更新状态 4.应用普通状态 

按照权重来看,首发>限免>升级>普通,可以理解为:4x>3x>2x>x 所以,同样的推广力度,在不同App的状态下,获得的效果也不同 


六:常见推广方式及优缺点: 推荐方式 
评价 
App推荐媒体、限时免费媒体 
1费用:位置/天收费,每天几千至上万。获取激活用户的成本在10元内都算是正常的 
2最主流推荐方式。 
3目前国内App推荐媒体数十家,需注   意辨别质量。 
3推广效果与产品定位、产品质量、产  品的名称和icon关系巨大 
4按天或周收费,效果不持久,主要用于集中资源冲榜 
CPC广告平台 
1费用:单次点击费用0.5元-0.8元 2点击到激活,转化率大概在2% 
3价格偏高,个别广告平台存在扣量现象 
4方便省事,尤其国外市场,直接投放CPC的广告平台就可以 
5投放时注意文案,banner等细节,可以提高转化率,达到省钱的目的 CPA积分墙 
1费用:6元左右一个下载激活 2什么是积分墙:积分墙属于鼓励下载,比如在玩某个游戏的时候,没有游戏币买装备了,在该游戏内添加的SDK积分墙上下载个App并安装完成,就可以获得一定的游戏币 
3由于并不是用户真正需要而下载的App,所以该推广方式会导致留存率比其他推广方式要低 
微博营销 
1费用:不同帐号不同,相对于App推荐媒体,发一条的费用低很多 2如果费用有限,尽量选择与自己app相符的几个微薄大号,否则就都上,炒作一下 3效果不持久 PR 
1费用:基本免费 
2各创业媒体,科技频道的报道。主要是增加品牌曝光率 
3效果一般,来的都是圈内人,可能不是你的目标用户。大家是来围观的,留存率不高 资源互换 
1费用:免费 
2在App内部需要加应用推荐的应用
墙,来与其他的推荐媒体或App做资源互换。很常用的资源互换方式 3App用户数少的时候没人愿意换,即使用户数大,下载数量也没有推荐媒体的高 
4需增加监控链接,以便于与其他开发者换量的时候做统计  
短信 
1费用:5分/每条 
2运营商可以精确定位到iphone用户  点击率低,点击到下载的转化率低。不是常用的推广方式 3有可能被扣量  
预装 
1费用:不详 
2联通搞不定,只能谈水货,难度比较大。此种推广方式在安卓很火,ios基本行不通 
3ios与安卓不同,用户需要自己注册账号,一旦与itunes同步,预装的App会被抹掉  
刷榜 
1费用:不详 2有被下架的风险 
3产品是关键,不好的产品,被刷到排行榜也会很快掉下来,意义不大,推广只是手段,建议更专注与自己的产品 
 
七:极阅提供服务: 
1 ios App推广:App推荐媒体代投/CPA代投/微博营销 2 ios App + 安卓App外包开发服务  3 新浪微博-品牌精准营销  



iPhone/iPad的程序,即使是Free的版本,也可以通过广告给我们带来收入。前提是你的程序足够吸引人,有足够的下载量。

这里,我将介绍一下程序中集成广告的方法。主要有两种广告iAdAdMob。(还有其他多种可被植入的广告SDK,这里就不都一一介绍了)

iAd


从iOS 4开始,Apple增加了叫做 iAd 的架构,通过它我们可以在程序中提供Apple的广告服务。Apple会支付给开发者60%的广告收入。

iAd Framework中有例程,我们可以下载学习。这里,把简单的步骤说明一下 :

追加iAD Framework

首先,在Xcode的[Frameworks]中添加[iAd.framework]。



创建ADBannerView

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

下面的程序显示了ADBannerView的初始化过程,以父窗口的viewDidLoad中实现为例。

    1. - (void)viewDidLoad {



    2. ……【省略】……



    3.     // 初始化ADBannerView

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

    5.     adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;

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

    7.     adView.delegate = self;

    8.     // 在父窗口下方表示

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

    10.     // 添加到父窗口中

    11.     [self.view addSubview:adView];

    12. }

    13. 复制代码
    复制代码


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

    1. #import <UIKit/UIKit.h>

    2. #import <iAd/iAd.h>



    3. @interface XXXViewController : UIViewController<UITextFieldDelegate, ADBannerViewDelegate> {



    4. ……【省略】……

    5. }复制代码
    复制代码


    如上所示,这里增加了「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. - (void)bannerViewDidLoadAd:(ADBannerView *)banner{

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

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

    10. }



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

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

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

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

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

    16. }



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

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

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

    20. - (void)bannerViewActionDidFinish:(ADBannerView *)banner {

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

    22. }

    23. 复制代码
    复制代码


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



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


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


2012-3-30 15:41 上传
下载附件 (23.08 KB) 



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

序。


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



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


同时,我们可以下载最新的SDK。(其实也可以通过这里下载)


下载并解压之后,会得到如下图的几个文件。其中README.txt有环境说明,文档例程的下载


URL。


注意点接下来我们看看程序中怎么使用该SDK。首先我们看看例程中有哪些需要注意的。MY BANNER_UNIT_ID的设定例程中有下面这样的定义(BannerExampleViewController.m)。 

    1. #if !defined(MY_BANNER_UNIT_ID)

    2.   #error "You must define MY_BANNER_UNIT_ID as your AdMob Publisher ID"

    3. #endif复制代码
    复制代码


里就需要上面介绍的注册时得到的程序专有的Publisher ID。没有它,编译的时候将报错。类似下面的样子,我们设定一下。 

    1. #define MY_BANNER_UNIT_ID   @"xxxxxxxxxxxxxxx"



    2. #if !defined(MY_BANNER_UNIT_ID)

    3.   #error "You must define MY_BANNER_UNIT_ID as your AdMob Publisher ID"

    4. #endif复制代码
    复制代码


另外,还有一个测试时用的属性测试的时候将 GADRequest::testing 属性置为 YES。如下For Testing的设置。 

    1. // Let the runtime know which UIViewController to restore after taking

    2.   // the user wherever the ad goes and add it to the view hierarchy.

    3.   bannerView_.rootViewController = self;

    4.   [self.view addSubview:bannerView_];



    5.   // For Testing

    6.   GADRequest *rq = [GADRequest request];

    7.   rq.testing = YES;



    8.   // Initiate a generic request to load it with an ad.

    9.   [bannerView_ loadRequest:rq];复制代码
    复制代码


示的广告如下图。


不过,该设定只对模拟器有效,在实际设备上运行时,仍然显示真实的广告。如下

图。


例程接下来,通过一个例程说明一下AdMob广告的添加过程。1. Xcode 4中创建一个「Tab Bar Application」新程序

「AdMobTabBar」


2. 将 AdMob SDK 放到该工程中


2012-3-30 15:42 上传
[url=http://www.1000phone.net/forum.php?mod=attachment&aid=MTI2NDJ8YWJlNDhkYjh8MTM3NjM5MDYyNnwwfDgyMTU%3D&nothumb=yes]下载附件 (305.48 KB)


[/url]


3. 添加 AdMob 所必须的 Framework( AudioToolbox, MediaPlayer, MessageUI, 


SystemConfiguration。)


2012-3-30 15:42 上传
[url=http://www.1000phone.net/forum.php?mod=attachment&aid=MTI2NDN8M2RkZjdhOTB8MTM3NjM5MDYyNnwwfDgyMTU%3D&nothumb=yes]下载附件 (245.98 KB) 


[/url]


4. 创建GADBannerView与iAD中的ADBannerView类似,AdMob也有一个GADBannerView,用来显示广告。其创建过程如下。 

    1. // Create a view of the standard size at the bottom of the screen.

    2.     bannerView_ = [[GADBannerView alloc]

    3.                             initWithFrame:CGRectMake(0.0,

    4.                                             self.view.frame.size.height -

    5.                                             TABBAR_HEIGHT,

    6.                                             GAD_SIZE_320x50.width,

    7.                                             GAD_SIZE_320x50.height)];



    8.     // delegate の設定

    9.     bannerView_.delegate = self;



    10.     // Specify the ad's "unit identifier." This is your AdMob Publisher ID.

    11.     bannerView_.adUnitID = MY_BANNER_UNIT_ID;



    12.     // Let the runtime know which UIViewController to restore after taking

    13.     // the user wherever the ad goes and add it to the view hierarchy.

    14.     bannerView_.rootViewController = self;

    15.     [self.view addSubview:bannerView_];



    16.     // For Testing

    17.     GADRequest *rq = [GADRequest request];

    18.     rq.testing = YES;



    19.     // Initiate a generic request to load it with an ad.

    20.     [bannerView_ loadRequest:rq];复制代码
    复制代码


同样,也有一个叫做GADBannerViewDelegate的delegate。可以实现在父窗口的UIViewController子类中,也可以单独写一个ViewController。 

    1. #import <UIKit/UIKit.h>



    2. #import "GADBannerView.h"



    3. @interface FirstViewController : UIViewController <GADBannerViewDelegate> {

    4.     GADBannerView *bannerView_;



    5. }



    6. @end复制代码
    复制代码


或者 

    1. #import "GADBannerView.h"

    2. #import "GADBannerViewDelegate.h"



    3. @interface MyBannerView : GADBannerView <GADBannerViewDelegate> {

    4. }



    5. @end复制代码
    复制代码


这里的delegate接口与ADBannerViewDelegate其实很类似。 

    1. // Admob成功取得

    2. - (void)adViewDidReceiveAd:(GADBannerView *)adMobView {

    3.     NSLog(@"Admob:adViewDidReceiveAd");



    4.     // 动画表示

    5.     adMobAd.frame = CGRectMake(0.0,

    6.              self.view.frame.size.height,

    7.              adMobView.frame.size.width,

    8.              adMobView.frame.size.height);

    9.     [UIView beginAnimations:@"AdMobBannerMoveOnScreen" context:NULL];

    10.     adMobAd.frame = CGRectMake(0.0,

    11.              self.view.frame.size.height - adMobView.frame.size.height,

    12.              adMobView.frame.size.width,

    13.              adMobView.frame.size.height);

    14.     [UIView commitAnimations];

    15. }



    16. // Admob取得失败

    17. - (void)adView:(GADBannerView *)adMobView didFailToReceiveAdWithError:(GADRequestError *)error {

    18.     NSLog(@"Admob:didFailToReceiveAdWithError:%@", [error localizedDescription]);

    19. }



    20. // AdMob广告被打开时

    21. - (void)adViewWillPresentScreen:(GADBannerView *)adView {

    22. }



    23. // 从AdMob的广告跳到其他程序时

    24. -(void) applicationDidEnterBackground:(UIApplication*)application {

    25. }



    26. // 从其他被打开的程序返回到AdMob广告显示

    27. -(void) applicationWillEnterForeground:(UIApplication*)application {

    28. }



    29. // AdMob广告显示被关闭时

    30. - (void)adViewWillDismissScreen:(GADBannerView *)adView {

    31. }复制代码
    复制代码


整体的代码如下所示 。这里GADBannerView的delegate实现在父窗口的ViewController中。 

    1. #import "FirstViewController.h"



    2. #define MY_BANNER_UNIT_ID   @"xxxxxxxxxxxxxxx"

    3. #define ANIMATION_DURATION  0.5f

    4. #define TABBAR_HEIGHT       49.0f



    5. @implementation FirstViewController



    6. // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.

    7. - (void)viewDidLoad

    8. {

    9.     [super viewDidLoad];



    10.     // Create a view of the standard size at the bottom of the screen.

    11.     bannerView_ = [[GADBannerView alloc]

    12.                             initWithFrame:CGRectMake(0.0,

    13.                                             self.view.frame.size.height -

    14.                                             TABBAR_HEIGHT,

    15.                                             GAD_SIZE_320x50.width,

    16.                                             GAD_SIZE_320x50.height)];



    17.     // delegate の設定

    18.     bannerView_.delegate = self;



    19.     // Specify the ad's "unit identifier." This is your AdMob Publisher ID.

    20.     bannerView_.adUnitID = MY_BANNER_UNIT_ID;



    21.     // Let the runtime know which UIViewController to restore after taking

    22.     // the user wherever the ad goes and add it to the view hierarchy.

    23.     bannerView_.rootViewController = self;

    24.     [self.view addSubview:bannerView_];



    25.     // For Testing

    26.     GADRequest *rq = [GADRequest request];

    27.     rq.testing = YES;



    28.     // Initiate a generic request to load it with an ad.

    29.     [bannerView_ loadRequest:rq];

    30. }



    31. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

    32. {

    33.     // Return YES for supported orientations

    34.     return (interfaceOrientation == UIInterfaceOrientationPortrait);

    35. }



    36. - (void)didReceiveMemoryWarning

    37. {

    38.     // Releases the view if it doesn't have a superview.

    39.     [super didReceiveMemoryWarning];



    40.     // Release any cached data, images, etc. that aren't in use.

    41. }



    42. - (void)viewDidUnload

    43. {

    44.     [super viewDidUnload];



    45.     // Release any retained subviews of the main view.

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

    47. }



    48. - (void)dealloc

    49. {

    50.     bannerView_.delegate = nil;

    51.     [bannerView_ release];



    52.     [super dealloc];

    53. }



    54. - (void)adViewDidReceiveAd:(GADBannerView *)view {

    55.     [UIView animateWithDuration:ANIMATION_DURATION

    56.                      animations:^{

    57.                          bannerView_.center = CGPointMake(bannerView_.center.x, bannerView_.center.y-TABBAR_HEIGHT);

    58.                      }];

    59. }



    60. @end复制代码
    复制代码




链接地址;http://www.1000phone.net/thread-8215-1-2.html



0 0