04-产品策划-版本升级

移动互联网行业,双方拼的是时间和速度,新上线产品每月甚至更短时间更新迭代一次,以便打响品牌,快速占领市场。小步快跑,快速迭代也是互联网最流行的开发思维,而app升级系统是版本更新迭代最基础的系统。

先说下app的版本升级流程(以闺蜜圈为例),以便整体了解版本升级所涉及到的各个环节的情况:


闺蜜圈升级流程

一、渠道打包

每当发新版本时,Android客户端会被分发到各个应用市场,比如应用宝,360手机助手等。为了统计这些市场的效果(活跃数,下单数等),需要有一种方法来唯一标识它们。客户端需通过渠道号来区分不同的市场,客户端访问API时会在请求参数中带上渠道号,以便后台接下来计算不同渠道的效果。以闺蜜圈安卓渠道包为例:

①1001001,首位代表1安卓,2代表ios。

②1001001,第2-4位代表推广的大渠道如1002001-应用宝、1003001-360市场推广等

③1001001,最后3位代表各渠道版本的子推广版本,比如1004001自有渠道的下载官网,1004002自有渠道的兄弟app推广位。

目前很多应用市场支持打增量包更新,建议打成增量包,减少用户更新成本。相比安卓端,苹果端新版在app store发布后,APP图标会有new的标识,用户升级机率会大很多。

二、apk、api文件的命名规范和不同类型安装包的管理

开发者环境下打包的安装包图标和命名要和线上环境下的应用区别开。在后续测试时就不会因为各个版本搞的手忙脚乱。接着说说apk、api文件的命名规范和不同类型安装包的管理:


安装包命名规范

①正式版:发布到各大市场的正式的版本,在经过全面测试后,排除一切不稳定bug,此时打包的正式版仍然需要经测试人员的最后把关,最后一定要保证的是,准备上线的APK、API文件是经过测试人员的最后把关的,否则如果开发如果做了改动不通知测试和产品人员,上线后出了问题再改就晚了。

②预发布:发布到外网环境供测试验证的版本。

③测试版:发布到内网环境供调试、测试的版本。

版本号的管理,前期就要搞清楚,否则后面产品上线后,出现bug要改进,或者添加新功能后对老版本是否有影响,这个时候版本号管理的好就会起到很大的作用,一方面你可以随时找出之前上线过的apk、API文件,另一方面面对不断修改打包的文件不至于把自己搞混。

三、版本升级类型

渠道打包更多是满足APP推广,扩大APP曝光度需要,为提醒用户更新APP版本,更多需要APP的自检升级。

1.自检升级是内置在APP里的功能,在我看来分为启动升级、推送升级和检测升级。

①启动升级:用户进入APP主界面,APP向服务器检测新版,如有则弹出升级提示框,有【稍后再说】、【不再提示】、【立即升级】选项,勾选【不再提示】则不再提示该版的更新,避免骚扰用户,点击【立即升级】,安卓端直接下载新包,苹果端则跳转到app store。

②推送升级:服务器主动向APP发送推送升级消息或APP向服务器检测到新版,在手机通知栏显示升级推送消息,点击消息打开app并弹出升级提示框。


③检测升级:提醒用户有升级的版本,提供用户另一个升级的机会。这个操作一般放在设置页或关于页。


2.强制升级

一定要预留强制升级功能,以防旧版存在严重漏洞,强制用户升级版本,升级提示框仅有【立即升级】操作,只有升级后才能进入应用。

WiFi条件下自动下载安装包

用户打开app看到升级弹层时,75%+直接点击【稍后再说】。要升级版本多烦的事情啊,要下载(最耗时间)、退出应用、安装... 360这个细节做的就不错:wifi条件下,当你选择【稍后再说】时默默地帮你把安卓包下了,下次升级弹层提醒你直接安装。


3.增量更新

有些开源库支持打增量更新包,用户不需下载全包,节省时间,也是一种较好的做法,根据观测,使用的APP并不多,可能是开发成本高吧。

四、版本升级设计

1.在App客户端埋下升级弹层逻辑,升级弹层内容由后台配置生效。


2.安卓版本和ios版本分开配置

3.配置推送用户范围(渠道号):

①渠道号:可配置推送到指定渠道

4.升级弹层配置(在以上推送用户范围下)

①将要升级为的版本名:

②更新特性描述:

③安装包大小:

④是否强制升级(设置低于或等于某个版本的强制升级):

⑤是否同时更新其它应用:如果是,需要配置如下字段,默认勾选,用户可手动勾选去打掉。(安卓)


a.其它应用名称:

b.其它安装包地址;

5.强制升级:只显示立即更新按钮,每次进入app都弹出升级弹层。

6.非强制升级:升级弹层弹出次数,用户每次进入应用如果未升级都弹层提示;

五、版本升级注意点

1.安卓端-新包升级后,用户的历史账号、配置等数据不能丢失;

2.安卓端-新版要向下兼容,防止用户装回旧版后报错崩溃,如新版把存储的数据结构改了,旧版读取失败而崩溃;

3.安卓端-升级后,删除安装包,减少占用存储空间;

4.服务器定制好升级策略,批量分类更新,以防全量用户拥入,把服务器撑爆;

5.更新特性描述要吸引人,手机内存、储存寸土寸金的年代,每更新一个版本意味着占用运行内存、存储空间变大,导致手机卡,所以更新特性描述一定要吸引人,让用户有动力更新。

总之,每一个版本都必须严格测试验证升级系统有效性,如果升级系统失效就是说这个版本死掉了,这个版本获得的用户也就全打水漂了。

推荐阅读更多精彩内容