Bloody Sunshine

Just too damn hot

Android运营基础知识:VersionName和VersionCode

晒太阳的四叶桑

小米应用商店运营了大概半年了,过程中有喜有泪,我们在运营过程中,发现有的运营和商务同学对Android的一些概念了解不深,因此准备了一些知识,会逐步发布出来,第一篇是关于版本的。

先上结论: Google为APK定义了两个属性:VersionCode和VersionName,他们有不同的用途。

  • VersionCode:对消费者不可见,仅用于应用市场、程序内部识别版本,判断新旧等用途。

  • VersionName:展示给消费者,消费者会通过它认知自己安装的版本,下文提到的版本号都是说VersionName。
    结尾有三个常见问题的解决方案

  • 同一个版本号,对应了多个VersionCode怎么办

  • 发布了一个VersionCode错误的版本怎么办

  • 发出去的应用有Bug要换回旧版,怎么操作?

 然后讲讲前因后果

大家在使用软件和应用时,都会涉及到版本的概念,大家都知道的,比如Win XP,QQ2012,小米桌面1.6。之所以会有版本,主要是因为软件产品一直在发展、变化的。版本的概念可以帮助消费者识别不同时期的产品。

而展现在消费者面前的版本,和开发者内部使用的通常是不同的版本。开发时通常会使用数字作为标志,比如6.1.7600.16385,其实是Win 7第一个正式版的版本号,而Win 7 SP1的版本号是6.1.7601.17514,这样长长一串数字对消费者毫无意义,所以在产品发布时通常会起一个更容易懂的版本。下文中会把Win 7这样的用于展示的版本叫做[VersionName],6.1.7601.17514这样用于程序标识的版本叫做[VersionCode]

早年因为软件主要自己负责自己的分发、升级等方面,所以版本号也相当自由,各家都有不同的规范。但是近年来移动设备崛起,App Store这样的应用商店集中分发成了主流。以升级为例,应用商店会负责检查消费者手机上应用的版本,并和商店里面最新的版本比较,如果商店里面的版本比较新,消费者手机上的版本比较旧,就会提醒消费者升级。

这就涉及到如何识别新、旧的问题。 对于计算机来说,最可靠的判断方式就是数字,数字有很多好处:程序容易判断、格式简单不容易出错、肉眼容易识别等。所以Google要求每个应用都要在APK安装包中记录这个安装包的[VersionCode],只要拿到这个APK文件,就可以知道它对应的[VersionCode]是多少,应用商店就会以这个[VersionCode]为准,来判断版本。安装包的[VersionCode]数字越大就越新。这样开发者在开发过程中,每有一个新版本只要加大一点这个数字就可以了。比如第一个版本的[VersionCode]是1,第二个版本是2。因为开发者可能每天可能会产生多个没有发布的版本,所以这个数字会增长的很快。

经过一段时间的开发,这个数字会变得比较大,比如16385,这时对一个消费者,这样的数字其实不太具有可识别性,比如说Win 16385和Win 17514在传达信息方面效果并不好,不利于产品的市场推广。因此Google也支持在AKP安装包内记录[VersionName],你可以叫Win 7、Win Vista都没问题,可以满足市场、传播方面的需求,这样[VersionName]其实不具备比较新、旧版本的能力,只是用来展示给消费者看的。

综上所述 VersionCode:对消费者不可见,仅用于应用市场、程序内部识别版本,判断新旧等用途。 VersionName:展示给消费者,消费者会通过它认知自己安装的版本。一般我们说的版本号就是这个。

我们在运营应用商店的过程中,发现有的开发者会遇到一些问题。

1、同一个VersionName(版本号),对应了多个VersionCode 这种情况很常见,比如说新版本发布之后,某个商店反馈说存在xxx问题,需要修复、定制等等操作,于是商务找工程师出了个新版本,考虑到是小版本升级,版本号没变化,但是VersionCode已经变了。

  • 可能遇到的问题:如果这个新版只在部分商店上线,就会出现都是3.1版,A商店的版本其实比B商店的新。已经安装了新版本的用户,还会被提示升级,这时候用户会困扰,为什么我装了3.1还要升级到3.1?部分商店为了最新会抓包,导致渠道包流窜,影响运营监控和分析。

  • 解决方案:a.版本号应该和VersionCode一起涨,而且一旦发布新版本,就在所有渠道上架新版。
    2、发布了一个VersionCode错误的版本 有时候因为工程师不小心,发布了一个VersionCode过大的版本,比如1.1.1.20版本的VersionCode写成了111,而1.1.1.27版本的VersionCode写成了11127,但是后面发布1.1.2版希望延续旧的VersionCode,用112。

  • 可能遇到的问题:1.1.1.27版的用户将无法获得1.1.2版本的升级,因为在程序看来1.1.1.27版本是比较新的,同时,已经使用了1.1.2版本的用户,可能会收到旧版本的升级提示,比并降级回旧版

  • 解决方案:其实很简单,因为VersionCode对最终用户是不可见的,只要增加就好了,上文的例子,新版VersionCode直接取11200就齐活了。
    3、发布了一个有Bug的版本,好捉急 偶尔会遇到版本已经发布了,第二天突然发现,糟糕,有Bug,用户开始骂了!于是商务同学到各家市场要求退回旧版本。

  • 可能遇到的问题:已经升级到有Bug版本的用户是无法回滚到旧版的,因此这样直接退回旧版本的方式对这些热心升级的用户是非常不负责任的。而且人肉召回的力度实在有限,这个有Bug的版本一定会流传的。

  • 解决方案:最好是不要浪费时间退回旧版,赶紧修复Bug发个新版本(记得加VersionCode),如果Bug比较棘手,建议把旧版本的VersionCode改大一些后,提交新版本,这样可以保证所有用户都能下载/升级到一个相对可靠的版本。
    以上就是关于Android应用版本的一些建议。希望对大家有帮助。

广告:欢迎各位开发者到小米应用商店提交应用

开发者站网址:http://developer.xiaomi.com

我这辈子,值了!

岩井俊二 电影音乐会

岩井俊二音乐会,导演说对他来说是完成了一个梦想,其实对于我们这帮听众来说何尝不是,以前从没想过会有这样一天,距离导演不到十米,听那些音乐,听他讲一些自己的事情。

这场音乐会分成四个段落:情书,四月物语,莉莉周,花与爱丽丝。四月物语从头到尾都感动的一塌糊涂,让我自己也意外,也许确实曾经是半个清新青年吧。那些音符流过的是十几年前的记忆。看岩井俊二第一部就是莉莉周,其实第一遍没怎么看懂,当时的DVD翻译真是相当没保障阿(摊手),尤其是非英语片就更是如此。但是视觉上完全被条田升(筱田升)独特的影像风格吸引了,星野和莲见两种完全不同却不可回避的孤独也让人震惊,是的,在All about Lily Chou-chou中,每个主角都那么孤独,也许这就是这部作品最吸引人的地方吧,人在年轻时总会有那么一段时间,被一些自以为是的想法困扰,如此说来,我还是没有长大呢,希望独特而有趣。

看莉莉周的时候,是高二,应该是2002年初,当时还在手动更新自己的个人主页,用基于perl语言的Leo-bbs架设自己的论坛,看到的每个电影都很新奇。当时看的好多电影都是黄推荐的,如此说来,这货还真的对我的电影品位影响颇深,美国美人儿和凯文史派西,猜火车,低俗小说(还记得第一次看在褶子家沙发上睡着了,哈哈),还有那个折磨死人的假全美版Momento。往事如烟。

在上海站的结尾,有一个大大的bonus,现场版的エーテルの知恵 〜 翼をください。

莉莉周的原声中,我最想也最不敢奢望听到的就是这一首了吧,看电影的时候只是觉得蛮好听,后来在听OST的时候用耳机仔细欣赏,多了细节之后颇为惊艳,当时在班里放,被同学称做:啦啦啦 什么乱七八糟的。 还有点挫折呢 :) 但是这次终究是无缘,北京站第一场并没有这个惊喜,只好看视频聊以自慰。

和别人聊起岩井俊二的电影,说到最喜欢的,一定会是Picnic和燕尾蝶,这次的音乐会都没有,不过导演说:不如就留到下一次吧,于是我热切的期待着YEN Town Band和Chara降临北京。

PS:国安剧院实在不怎么样,演出期间竟然有装修声

PS2:感谢Yoyo姐送的Tee和名信片和签名海报!在现场还见到了久违的欣欣,真不错!

PS3:买了莉莉周的大海报很开心!<- 这泥马显然是被资本主义腐朽了阿!

最后放一张导演的照片吧

岩井俊二导演 在北京国安剧院 岩井俊二电影音乐会

iTunes Connect 开发者上手经验

搞iOS app一段时间了,做个阶段性的总结,希望后来者少走点弯路。

iOS Developer通常需要用到 developer.apple.comitunesconnect.apple.com 这两个工具,就如同名字表现出来的,前者是开发者资源站,包括文档,工具,社区都在那里。后者是管理自己App的工具。本文提到的内容主要和iTunes Connect有关。

一些建议阅读的文档:都能在developer.apple.com里面找到

关于帐号语言

第一次在App Store添加新app的时候,你有需要设置两个内容,Primary Language和公司名,这两个设置一旦选定是不能更改的,如果不是有特殊的需求,语言强烈建议选择英文。因为App Store是支持多语言的,未支持的语言和未设置的语言都会默认显示Primary Language,英语相对来说更通用,也可能帮你抓住一些国际化的机遇。

如果已经选了其他语言怎么办?注册一个新的Developer帐号。 <- 很杯具,但是Apple是不会帮你改的

Update:2012年1月13日 iTunes Connect升级之后可以随意指定Default Language了。

危险的禁区

有一些事情在iOS上不能做,做了轻则审核不过,重则不能再提交新的App,详情请阅读上面提到的App Store Review Guidelines,下面精选一些常见的问题

  • 自己的App做应用平台: Apple不欢迎此类行为,明确表示不可以在App中下载可执行代码,也不允许安装或运行其他程序(但是可以调用其他App)。
  • App的介绍中不可以提及其他平台: 如果你做了一个跨平台的App,记得不可以在Meta里面写支持Android。
  • 如果你的产品中有需要付费的环节,必须用Apple提供的In App Purchase,如果用其他支付平台,会被日。
  • 如果你的产品不是游戏,那么不能用Game Center(是的这货就是个积分和成就系统,但是只给游戏用)。
  • 你做的任何事儿Apple觉得不合适,就会日你。

更新App会遇到的各个状态和需要的时间

一次正常的更新会经历这样的过程:Prepare For Upload ->  Waiting For Upload -> Upload Received ->  Waiting For Review -> In Review -> Processing For App Store -> Ready For Sale

消耗时间的主要是如下几个状态

  1. Upload Received:通常1个小时以内就会变成Waiting For Review,Apple许诺24小时以内,如果慢通常是Apple系统维护,超过24小时建议申请查询。
  2. Waiting For Review:通常3-10天会变成In Review,可以申请加急。
  3. In Review:通常1天以内,不过CocoaChina上有人表示曾经被审了数个月(大哥你就等着啊?),如果时间超过1天建议申请查询。
  4. Processing For App Store:通常一个小时以内就可以Ready For Sale了,Apple许诺24-48小时。

所以,通常程序提交到通过审核大概是10天的样子。如果对上线时间有期望,尽量提前提交审核。

如何申请查询 / 申请加急

App Store的审核基本上是一个黑匣子,Apple不会告诉你审核团队是怎么工作的,你也几乎没可能找到负责审核的真人,如果遇到需要查询/催促/申诉的情况,全都需要通过iTunes Connect的反馈系统进行。

使用方法是,在iTunes Connect任意页面,点击底部的Contact us,App Review,里面有如下三项:

  1. Application Review Status Check: 如果某个状态卡住了,可以问问怎么回事。
  2. Request Expedited Review: 申请加急审核,这个是限制次数(频率?)的,申请太多次会被拒绝,请珍惜。
  3. Continuing Communication: 这个没用过,页面Title是App Rejection Clarification,申诉可以用这个。

收集用户意见

基本上App Store的客户评论是最倒霉的用户意见收集系统:你没有机会和对方沟通,不能追问,也没办法解释,因此请一定记得在App里面给用户一个反馈方法,无论是发邮件还是去论坛/博客留言都好。
另外,在Apple自己的Crash log收集系统,需要满足比较多的条件才能收到,如果有条件最好自己用开源系统搭建。

App Store介绍内容优化

App Store中App的介绍是用同一套内容,对Desktop-Client(iTunes) / Mobile-Client(App Store) / Web 展示。因此在设计内容的时候要考虑多个平台的特性,其中,Web和iTunes比较接近。

  • Desktop: 介绍内容缺省只显示前三行,因此请把最重要的产品卖点在前三行说清楚,最好第一句话就说明白。通常桌面端的页面比较宽,为了保证可读性最好手动分段换行。
  • Mobile: 手机屏幕宽度所限,内容会很容易自动回行,因此要注意描述文字在版式上的美感。同时App Store并不会对段落进行缩进,可以自行缩进,列表项可以用- * +等符号自制list。另外,因为图片的表达效果更好,最好控制文本介绍的长度,让读者更容易看到图片。另外升级用户会看到What's New的文本,如果图片有变化也是尽可能简洁的好 :)
  • 关于图片:  虽然说是产品截图,但是Apple并不介意开发者对图片进行加工,因此这5个图片其实就是你的广告区。

关于排名

  1. 排名算法是黑盒子,在网上可以找到一些靠谱的猜测,权重最大的应该是下载量。有兴趣的同学可以看知乎上这个问题
  2. 怎样提高排名?做好你的产品,让用户喜欢。
  3. 有哪些推广方法可以用?

其他注意事项

  • 在提交新版本的时候可以修改这些信息:Keywords,App Name,Add Language。如果发现改不了不要着急。
  • Description和What‘s New 里面的全角符号会变成半角的,符号后面加个空格是好主意:)
  • 如果App的尺寸超过20M,那么在数据网络下是不能下载的,请尽可能不要超过这个数。这个尺寸以App Store显示的数字为准,自己分发的IPA尺寸可能会不一样。
  • 待续
    以上这些,其他有心情再写/补充,不过下一篇又不知何时了。

为什么用新浪微博做营销?

书摊老板

前略。。。具体的方法论放到后面再写

这里的微博仅指新浪微博,而非泛Microblog类产品,其他的待有了心得再补充。。新浪微博是革命性的营销工具,通过它,营销人员可以史无前例的与顾客/潜在顾客进行针对性的深度的沟通(私信或评论)。同时也可以进行广播是的广度传播(直接发微博影响粉丝)。简直是让人梦寐以求的营销工具。它的很多特性决定了它是一个媒体,而营销者也要以一个媒体人来要求自己。

营销的目的永远是盈利,这个终极目标通常会拆成市场占有率,品牌曝光,PR传播之类一些子目标。而传统的营销手法无非是轰炸机+步兵,比如卖场里面经常见到的,蒙牛在电视上狂砸广告,报纸猛发软文,配合超市的促销员,完成一次产品销售。通过反复的品牌曝光给消费者留下印象(那个大师说的来着,至少有效曝光10次才能给消费者留下印象),并在最终渠道上推他一把。而且,上面还有50%的广告费白花了,谁也不知道是哪一半。

那么,微博改变了什么呢?

  1. 极高的性价比 - 几乎只有人的成本,而且每一分付出都有回报
  2. 精准找到潜在的顾客 - 微博提供了强大的搜索工具,只要你够聪明
  3. 低调的一对一的深度沟通 - 缺省的隐私级别很低,可以直接沟通
  4. 二次传播/口碑价值 - 被服务在中国是一种惊喜,惊喜就会有口碑
  5. 将公关危机化解于无形 - 通过监测第一时间发现潜在的风险
    1. 极高的性价比

这里说的极高的性价比,不是建议去微博投放任何广告,或和新浪官方搞活动。在新浪微博上做营销,需要的只是足够勤劳的团队,合理的分工,相对完善的方案就可以了。在操作的时候其实有几种不同的方式,这里以采用品牌官方帐号的方式为例。

通常官方微博帐号只需要做两件事情:

  • 发布官方信息广播(包括活动、促销、产品等方面)
  • 找到目标用户,并按照既定方案与之沟通。
    除了人的成本,几乎没有什么其他的了。什么?转发送iPad?hmmm,下一篇我会告诉你这个主意并不好。

2. 精准找到潜在的顾客

这一点其实没太多可以说的,因为微博是一个信息的载体,太多人在这里buzz,所以营销者也有更多机会识别到哪些人是顾客或者潜在的顾客,只要你足够聪明。举例来说,嗯,就米聊吧,支持一下。

米聊怎么在微博上找用户和潜在用户?搜索哪些关键字呢?目前米聊帐号关注的只有『米聊』,是的提到品牌词的人一定是用户了。但是这还不够,如果只是找到已经在用的人,实在算不上成功的精准营销,谁会可能用米聊呢?根据产品特性,也许『丢短信』、『安卓聊天』、『手机传图』都可以帮米聊找到合适的人。

3. 低调的一对一的深度沟通

找到人之后,就是聊了,因为是通过关键字找到的,可以立刻以关键字为话题建立沟通,内容根据关键字与品牌的相关度可以指定方案,关怀或推销都是可以的。

特意加上了低调两个字,因为在微博上做沟通太低调了,那个『评论』功能简直就是为营销者设计的!如果你找到了你的目标用户,通过评论与他沟通的时候,你的竞争对手根本不会注意到,也没有办法搜索到,所有这一切都在水面之下,悄悄发大财的感觉啊。这方面twitter上做就痛苦一点,如果@的话就会出现在timeline里面,DM沟通又不利于二次传播。

4. 二次传播/口碑价值

上面所有工作的成果都会这这里爆发。

通常来说故事是这样的:小明如果对笨球的显示器售后不爽,可能会和朋友小光抱怨,然后这个朋友小光下次面对选择的时候,就选择你竞争对手美国神舟的产品。这样的抱怨是单向发布的,在传统渠道中也不会被发现。但是在微博上就可以精确的定位 到这个人,并且为他提供满意的服务。

所以故事可能变成了这样:小明对笨球显示器的售后不爽,到微博上抱怨,被笨球显示器的官方微博发现了,及时与之联系,表示歉意,并安排客服中心尽快确认提供服务,然后小明又发了一条微博:笨球显示器太给力了!

怎么看起来好像有点像客服呢?

是的,微博营销和在线客户服务是一起做的

同时,用户每一次在微博上对品牌的赞美都可以通过官方帐号的转发放大,给用户正向的回馈。

5. 将公关危机化解于无形

嗯,上面已经说了,因为要不断寻找自己的目标用户,在这个过程中对信息极度敏感,可以提早发现危机,化解危机。

大概是这样,下次有空的时候写点干货,关于怎样有效使用微博营销的一些方法。

所以,还是要写点什么的,新年 快乐

街旁办公室

又到了每年的这个时候,blog已经数月没有更新,基本处于荒废状态,虽然迁移到国外,换了WordPress但是一直写不出东西来,从金山离职的半篇感言还留在草稿箱里。

回头看去年的牢骚和愿望算是部分完成吧,如同以往一样,很多的意料之中与意料之外。比如从一个苹果黑变成了一个苹果用户Touch -> iPhone -> iPad -> MBA 还想着手头宽裕搞个MBP玩,这就是完完全全的意料之外。再比如主动入手了SONY的卡片机并丢在出租车上(说起来作为一个学工业设计的同学,即黑Apple,又黑SONY,这是多么缺心眼啊),比如今敏去世了,比如饭否恢复了。很多重要的事情似乎都没有留下什么痕迹,就匆匆漂走了。

我则以一种略微麻木的状态,继续过下去。

今年读的书还蛮多,算是有一些收获,加入街旁之后也有机会做一些和以前不一样的事情。蛮好。

只是一如既往的无法面对自己,呵呵,内在矛盾是人性最基本的组成,笑。