手机端App内升级提示框逻辑设计思路

背景

现有的项目中,App的升级率不高,虽然中间存在多个强升版本,但是依旧大量存在低版本的用户。轻(比如小bug)则影响用户体验从而损失用户,重(比如支付购买类严重漏洞被利用)则影响公司收益。

分析

可以从两方面来分析此问题。1.原生代码层面,2.接口层面。

原生代码层面分析

可能性1:很多App请求升级接口的逻辑往往放在进入App首页的时候,如果网络调用失败,则App可以继续使用。

解决方案1:可以将上次请求成功的数据进行缓存,如果调用失败则使用缓存数据。
缺点1:如果升级策略回滚,则线上用户仍然使用缓存数据去升级
缺点2:首次无缓存的时候,如果断网,仍然可以绕过

解决方案2:监听网络连接,如果请求失败,在连接上之后,再次请求接口
优点:开发量小,后端资源消耗少
缺点:如果是服务端临时性问题,没法解决(一般情况可忽略此情况)

解决方案3:所有接口添加版本校验逻辑,再返回统一错误码,手机端针对错误码统一处理
优点:覆盖全
缺点1:后端开发量大,如果是新项目,可忽略,如果是旧项目,慎用
缺点2:所有接口都检查,如果同一时间请求多个接口,则造成资源浪费。

解决方案4:同上,但是只是主要流程添加校验逻辑,比如登录、支付等主流程
优点:解决了方案3的缺点

解决方案5:开启一个service,在service中请求更新接口,如果失败,按照时间指数递增,延迟重新获取(2、4、8、16、32、64、128、256、512、1024,单位:秒,可设置次数阀值)直至成功
缺点:如果这几次都没成功,同样可绕过,可以增加阀值大小,也可以达到一定时间长度之后,不要以指数增长,比如2、4、8、16、32、64、128、256、512、1024、1024、1024...

总结:以上方案都可行,根据自身情况具体问题具体分析

可能性2:弹出框在强制升级的时候可以取消
解决方案:设置为不可取消的对话框

可能性3:强制升级的时候,升级过程中(下载、安装等过程),返回App,强制升级框消失
解决方案1:升级框设为不可取消,点击升级的时候,升级框也不会消失
解决方案2:在resume生命周期中添加对应逻辑,确保强升过程中,返回App,升级框再次展示

接口层面分析

可能性1:Android多个渠道配置因人为原因,导致漏配或者忘配
解决方案1:人员培训(和技术无关)
解决方案2:漏配或者忘配的渠道,走兜底方案,取默认官网渠道的配置(注意:渠道变更可能会涉及运营统计数据异常,谨慎采用)

可能性2:升级只考虑最新数据,没有兼容旧的强升数据
现象:比如当前手机版本为1,2为强制升级版本,3为非强制升级版本。从1到3,应该返回强制升级,目前返回非强制
解决方案:修改对应逻辑,如果最新的是非强制,则还要去匹配旧的数据,直至匹配到强升数据为止

更多考虑

后端

1.版本比对(可以在后端处理,也可以在前端处理)
分析:Android有两个字段代表版本,versionCode和versionName。versionCode:整型,比对非常简单。versionName,常见的是x.x.x的格式,但是需要考虑x.x.x.x和xx.xx.xx的格式

2.是否需要区分pad和phone
分析:有些App pad和phone是两套代码,线上的版本号不一致,则需要单独区分处理

3.考虑强制和非强制交替出现的情况
分析:正如上面所说,最新版是非强制升级,但是一旦中间存在强制版本,而低版本请求的时候返回的却是非强制,那么对用户侧影响非常大。一旦中间存在重大漏洞,则会对公司造成经济损失。

4.是否需要区分不同渠道
分析:大部分Android应用会存在多个渠道,多的甚至达到几十个。可能有些渠道审核时间差异或者某些其他原因,就需要针对某些渠道做单独的升级逻辑。

5.是否需要指定版本
分析:一般情况下强制升级的版本很少,普遍都是非强制。比如微信QQ等,很少见强制升级。如果某些旧版本存在致命级别的bug,但是最新版产品要求是非强制升级,这就需要针对有bug的旧版本做强制升级的处理。
既然能够支持指定版本,那么也要支持指定多个版本,因为不可能只有1个版本存在致命问题。

6.是否需要指定某一范围内的版本
分析:同上,某一个致命级别bug藏的够深,存在于多个版本,则需要对涉及的版本做个范围处理

7.考虑是否灰度
分析:一个新功能/技术改造的上线,可能会存在重大bug,如果一下子全量上线,会影响全部用户。采用灰度功能,可以先从部分用户开始,将问题暴露出来,集中整改,再发新版本或者热修复,从而减少对用户的影响。
问题1:但是app一般情况下可以由接口控制升级,也可以由应用市场控制升级,所以没法控制应用市场的灰度逻辑
问题2:灰度逻辑是否针对到user,很多情况下升级接口在登录/未登录都可以请求,未登录的情况下没法指定到人。可以使用token,或者未登录的情况下不能请求灰度的版本,可以根据业务需求具体分析。

手机端

1.可以直接走应用市场更新,点击升级的时候,跳转到指定应用市场,指引用户升级。

2.可以直接走app下载,则需要考虑是否加入断点续传,以及md5校验的功能,因为很多情况下会出现重复下载、安装解析失败等原因。如果apk文件是放到oss阿里云上的话,这些逻辑oss的sdk都已经支持。

总结:

一个健全的系统,应该要考虑以下几点(甚至更多我没有考虑到的地方),然后结合自身业务,最终采用其中的某些点。升级逻辑的控制粒度尽量要细,一旦有问题,降级策略也好针对性处理,对用户的影响就小。

手机端

1.考虑请求升级接口的时机
2.版本比对如果使用versionName的话需要考虑x.x.x.x和xx.xx.xx
3.考虑跳转市场升级,还是自行下载apk升级
4.强制升级框如果不点升级,不应该被取消(包括进入后台再进入前台、下载的时候返回、安装的时候返回等等情况)
5.下载是否考虑断点
6.下载是否考虑校验文件正确性

后端

1.版本比对如果使用versionName的话需要考虑x.x.x.x和xx.xx.xx
2.是否需要区分pad和phone
3.是否需要区分不同渠道
4.是否需要针对指定版本、多个指定版本、版本范围,做特殊处理
5.考虑强制和非强制交替出现的情况
6.考虑是否灰度
7.针对漏配考虑是否添加兜底方案
8.针对非强制,可以考虑添加每日弹框次数功能

补充说明

正常的版本更新,往往非强制要多于强制升级。
如果是非强制升级,则可以支持大于指定版本、小于指定版本、等于(1或N个)指定版本做非强制升级处理。同时会存在针对某些有致命bug的版本做强制升级处理,比如大于指定版本,小于指定版本,等于(1或N个)指定版本
如果是强制升级,则可以支持大于指定版本、小于指定版本、等于(1或N个)指定版本做强制升级处理,同时不应该存在非强制升级的版本判断

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350