英文原文:http://www.crossforward.com/2010/08/25/iad-for-developers/
iAd for Developers
简单结论
苹果平台的广告 iAd for Developers 看起来似乎对下载量没有多大帮助。
从 8月 19号到 8月 25号,我在最新版本的 iAd for Developers 平台上推广我们的有声电子书 Audiobooks Premium 程序,结果很令人失望。到目前为止,看起来 iad不是一个可行的增下下载量以及创造可持续经济效益的方法。这一次试验我花费 1,251.75 美刀,但仅仅带来 84个下载量,因此 CPA接近 15美刀,而我们的 app仅仅是 0.99美刀,这明显不可行。
细节
这一次测试是测试广告平台,以及寻找推广 app的最低成本系列试验的最后一次。我的目标是找出经济效益上可行的,向无法在 app store平台上找到我们的 app的新客户,推广我们的产品的。当 iAd for Developers 发布的时候,我很好奇,苹果是不是真的找到一个方法解决曝光度问题,而我们也可以通过这个方式无缝地将我们地 app卖给用户。本文对那些在考虑同样方式的开发者或许可以有所借鉴。
流程
iAd for Developers 申请非常简单。你到 iad页面,提交一份你的联系方式,一天后,你会收到一份苹果 email要求设置一些信息,以及提交广告图片等等。我们设置这次试验的 CPC 0.25美刀。
我们设计下面这个边栏用于让那些可能感兴趣的人了解我们的程序是怎样的一个 app。或许这看起来太多文字,而图像元素太少,但我们不想为印象付费,我们只想要真正感兴趣的人点击我们的广告:
在这个页面上,你设置一个预算,然后点击 GO,接着苹果会给你设置一个报告网站,可以实时跟踪,监视。苹果的报告非常有用而且专业。我虽然不能说,我们的测试很完美,但我可以说,这个测试很顺利。相比 Admob跟 Flurry,我非常感谢苹果有这种程度的专业数据及细节。
The Target
目标对象
我们选择了我们最成功的程序, Audiobooks ,作为这次实验的对象。对于那些觉得我们的程序是不是足够受欢迎而怀疑我们的实验没有参考性,我必须澄清,我们的这个程序已经超过 160万次下载,而且在这个程序的生命周期期间长期停留 Books分类的 Top10。或许我们的程序不是小鸟,但毫无疑问它是已经经过用户考验的热门程序。
The Results
结果
这个实验在星期三晚上开始, 8月 19号。起始日的的数据看起来没有什么保证。
Day
Spend
Impressions
Clicks
CTR
Downloads
CPA
8/19
$255.00
400,991
1,020
0.25%
19
$13.42
从 iAd的报告上看,这是可以估计的。他们使用一个目标定位系统需要一点数据用于找到精准的可转化客户。于是我们让这次实验继续运行刀周末(一直以来都是我们一周中卖的最好的时间)。但结果没有什么变化
Day
Spend
Impressions
Clicks
CTR
Downloads
CPA
8/20
$258.25
449,338
1,033
0.23%
17
$15.19
8/21
$253.73
422,354
1,015
0.24%
15
$16.92
8/22
$254.00
413,144
1,016
0.25%
18
$14.11
这个时候,我真的很想立马把插头拔了(直译,其实是想中断实验的意思),但我想再给几天,设置一个较低的每天预算,看看他们的目标定位算法是否可以改进效果。但事实总是不如所愿。
Day
Spend
Impressions
Clicks
CTR
Downloads
CPA
8/23
$128.50
229,958
514
0.20%
9
$14.28
8/24
$102.25
137,144
409
0.30%
6
$17.04
这个时候,我们真的把插头拔了(同上),没有任何迹象表明,这次实验即使再运行多长时间,可以有一个成功的结果。最后,下面是总结:
Day
Spend
Impressions
Clicks
CTR
Downloads
CPA
8/19
$255.00
400,991
1,020
0.25%
19
$13.42
8/20
$258.25
449,338
1,033
0.23%
17
$15.19
8/21
$253.73
422,354
1,015
0.24%
15
$16.92
8/22
$254.00
413,144
1,016
0.25%
18
$14.11
8/23
$128.50
229,958
514
0.20%
9
$14.28
8/24
$102.25
137,144
409
0.30%
6
$17.04
Total:
$1,251.75
2,052,929
5,007
0.24%
84
$14.90
简单对比
我们在 admob上做了同样的测试用于跟 iAd对比,所以我花了 75美金,并设置相同的图片。 Admob没有像苹果那样的很好的转化率跟踪报告,但点击数据毫无疑问很有趣。
Impressions
Clicks
CTR
Cost
CPC
145,093
1,944
1.34%
$77.76
$0.04
Admob 比 iAd便宜了 6.25倍,而令人惊讶的是, ctr居然是 5.5倍多。这另我非常惊讶为什么苹果相信放一个 iad的广告会引导用户的购买冲动。
我的想法
这令人失望的实验结果并没有让我惊讶。我已经在每一个广告平台上实验过,并且发现没有一个有明显的效果。我想根源在于用户为什么要买 app。我相信,大部分人买 app是被建议,或者有人直接口头说,或者是看到图标地数据。没有一个很好的,可以用钱来解决的方法可以真正代替这种认知系统。我尝试 iad,是因为 iad做了一件其它平台都做不到的——无缝付费体验。用户不需要退出他们当前的 app就可以完成付费,所以用户体验会好很多。但是,我想苹果已经发现他们已经掉进他们自己所宣称的犯规问题。广告缺乏激情,点击广告条仅仅是向你展示一个模拟的 app store页面,这是没有办法把用户拉进去的。我想,如果他们允许开发者设置更多的可以真正展示他们的程序的特性,包括视频, html5,排版, demo等等的广告,或许这种站街式的广告可以成功。
这次实验的费用,至少 60%直接进入了我的同行的口袋中,所以我猜我刚刚为我的同行们的啤酒事业贡献了 751.05美金。干杯!
写自 David Smith 。 David是 Cross Forward Consulting 的创造及所有人。 Cross Forward Consulting 是一间依靠 app以及 app咨询的创造利润的公司。
译者后记,
我的新游戏疯狂的兔子刚刚上架,当我在找合适的付费推广时,发现了这篇文章,我个人觉得有参考的价值,因为在看到这篇文章之前,我正在打算往 iad上投个几百美金,幸好还没投。
我的新游戏,疯狂的兔子:
各位兄弟姐妹,乡亲父老们,看在咱翻译码字码的这么辛苦的份上,多多支持下吧,呵。
( ↑点这里下载 )
UIScrollView分页的实现
UIScrollView的经典例子就是safari的编辑模式了
UIScrollView可以垂直,水平滚动。
如果属性pageEnabled = YES,则设置其为分页模式,那么没滚动一次就是一页,垂直方向上的一页就是UIScrollView的高度,水平方向就是其宽度。
我们可以设置contentSize,这就是UIScrollView可以滚动的最大区域了。
UIScrollView没有datasource的概念,因为这就是一个view,具体view中的内容摆放完全随意,只是每次都会滚动固定的页面大小。
比如我们有5个页面,我们需要自己计算每个页面的位置,将其水平放在UIScrollView上。
contentSize则设置为5*每个页面的宽度,每个页面的高度。
如果contentSize的高度或这宽度正好与UIScrollView的高度或宽度相等,则在该方向上不能滚动。
具体例子可以查看官方文档的例子,PageControl。
注意:UIScrollView不会带有分页的指示符号,需要利用UIPageControl控制。
但是要想做到safari的效果,我们需要一个小技巧,因为在safari中,当前页时可以看到前后两页的部分内容。
注意:分页的宽度不能修改,所以我们只能缩小UIScrollView的宽度,让其不要占满整个屏幕,同时设置clipsToBouds属性为NO,这样超出范围的视图也会显示,这样就能看到前后两页的内容,当然需要设置前后两页的alpha值为0.5,做出一个透明效果。
在UIScrollView的滚动事件中,判断位置,当一个页面出现的区域超过1半时,设置alpha为1,小于1半时设置alpha为0.5
现在还有一个问题:UIScrollView的滑动事件响应区域变小了,因为UIScrollView本身变小了,其余我们看到的页面在区域之外,因此我们需要重写UIScrollView所在的parentView的hittest事件,在其他区域的事件返回值为UIScrollView对象,这样用户感觉整个屏幕都是UIScrollView在响应了。
现在有很多的开放平台,可以供第三方来基于这些开放平台开发应用程序,最近在做新浪微博的一个小例子,刚刚入门,高手勿拍砖!
1、http://open.weibo.com这个是新浪的开放平台,里面有SDK,有开发文档等等
2、下载SDK,我暂时先下载了一个JAVA的SDK来实验一下,具体地址:http://open.weibo.com/wiki/index.php/SDK#Java_SDK
3、将其解压到eclipse的workspace里面,然后导入到eclipse
4、开发第三方应用程序,需要创建一下应用,之后你会得到一个
Key
App Key:
1211******
App Secret:
d6b*****************************
5、一开始是找到的是weibo4j.Weibo.java、weibo4j.examples.statues.UpdateStatus.java文件,于是在UpdateStatus.java里修改了一下Key和Secret的值,当然如果用默认的,好像是不出错的,但是我用了一下自己的,却出错了,什么错误呢?
weibo4j.WeiboException: 403:The request is understood, but it has been refused. An accompanying error message will explain why. {"request":"/statuses/update.json","error_code":"403","error":"40320:Error: basic auth forbidden !"} at weibo4j.http.HttpClient.httpRequest(HttpClient.java:669) at weibo4j.http.HttpClient.httpRequest(HttpClient.java:611) at weibo4j.http.HttpClient.post(HttpClient.java:435) at weibo4j.Weibo.updateStatus(Weibo.java:1276) at weibo4j.examples.statuses.UpdateStatus.main(UpdateStatus.java:28)
网上说的是:将自己添加为测试用户
①登录开放平台,我的应用--编辑应用属性---测试用户UID
②这个UID就是你注册新浪微博的时候,分配给你的一串类似于QQ号的东西,可以到“我的微博” ,上面会有你的名字和微博的ID,这串数字就是UID
③将UID放到输入框里,就会将你自己添加为测试用户
看到basic auth认证机制不能用了,于是我将
Weibo weibo = getWeibo(false,args);里面的false改为true,让它使用OAuth认证,但是可能是由于我太菜了,运行后还是有问题,再次如果有那个朋友知道的话帮个忙哈
args = new String[]{"xxxxx@.sina.cn","*******"}; Weibo weibo = getWeibo(false,args); Status status = weibo.updateStatus("心语互动测试成功!"); System.out.println(status.getId() + " : "+ status.getText()+" "+status.getCreatedAt());
上面是UpdateStatus里面的代码,下面是运行后的错误
weibo4j.WeiboException: 403:The request is understood, but it has been refused. An accompanying error message will explain why. {"request":"/statuses/update.json","error_code":"403","error":"40320:Error: basic auth forbidden !"} at weibo4j.http.HttpClient.httpRequest(HttpClient.java:669) at weibo4j.http.HttpClient.httpRequest(HttpClient.java:611) at weibo4j.http.HttpClient.post(HttpClient.java:435) at weibo4j.Weibo.updateStatus(Weibo.java:1276) at weibo4j.examples.statuses.UpdateStatus.main(UpdateStatus.java:28)
即使查了错误代码,还是不知道到底是哪里错了
6、后来我看了一下readme.txt说明文档,想用不需要认证的OAuth来试试,于是按照它的说法:
OAuth桌面应用访问
步骤: 1> 在weibo4j.examples.OAuthUpdate 访问认证的URL,得到pin
2> 在weibo4j.examples.OAuthUpdate 输入pin,然后得到AccessToken
3> 即可访问用户的微博,参考:weibo4j.examples.OAuthUpdateTwo
weibo4j.examples.OAuthUpdateTwo
尝试了一下,运行后控制台下会有个链接,点击这个链接,会得到一个pin:350576
在控制台输入pin后,得到了
Access token: f520d1efb5532e6daf**************
Access token secret: ddb5f6990b66579fe4**************
7、然后将Access token和Access token secret放入weibo4j.examples.OAuthUpdateTwo中
/* * 此处需要填写AccessToken的key和Secret,可以从OAuthUpdate的执行结果中拷贝过来 */ // weibo.setToken("AccessToken", "AccessTokenSecret"); weibo.setToken("f520d1efb5532e6daf**************", "ddb5f6990b66579fe4**************");
8、下面这条语句是更新状态的语句,你可以输入你想说的
Status status = weibo.updateStatus("你好吗?");
9、然后还要将你的用户名和密码加入到里面,注意红色部分
args = new String[]{"*******@sina.cn","*******"}; if (args.length < 2) { System.out.println( "Usage: java weibo4j.examples.OAuthUpdateTwo token tokenSecret"); System.exit( -1); }
10、运行JAVA程序,然后更新博客,你会看到状态更新了
没有意义吧。。。拿到
Access token: f520d1efb5532e6daf**************
Access token secret: ddb5f6990b66579fe4**************
就可以了。。
没有意义吧。。。拿到
Access token: f520d1efb5532e6daf**************
Access token secret: ddb5f6990b66579fe4**************
就可以了。。
但是没有加用户名和密码会报错,当时我也是按照说明文档来做的,后来加上了用户名和密码后,可以运行了,具体原因我还在研究中...
另外我想问个相关的问题
类似开放平台的认证都用到了request token 和 access token
用request token换取access token的意义何在,为什么不能直接拿到access token
还有request token 和 access token都各自对应一个secret
有人能解释下原理吗
http://open.weibo.com/wiki/index.php/Oauth
参考:http://tools.ietf.org/html/rfc5849
另外我想问个相关的问题
类似开放平台的认证都用到了request token 和 access token
用request token换取access token的意义何在,为什么不能直接拿到access token
还有request token 和 access token都各自对应一个secret
有人能解释下原理吗
http://open.weibo.com/wiki/index.php/Oauth
用request_token是因为request_token被授权后,会暴露在url中, 被认为是不安全的,因此被设计为一次性使用,换取access_token后即作废。 access_token全程是在后台进行交互的,被认为是安全的。
secret,是为了确保token所有权的签名密钥。
还有个timestamp和nonce, 是防止重放攻击的