思路

  • 更新控制及机制由服务器端决定:客户端向服务器端请求更新检查「带账号或设备信息、当前版本信息等」,如果需要更新,则从指定地址下载、安装、运行程序。不需要更新,则无提示

  • 更新检测返回结果中,至少包含两个字段,一个为是否更新「isupdate」,一个为更新地址「downloadurl」。isupdate为true,则根据 downloadurl 下载更新即可。isupdate为false,则不更新

    H5+App 中新增返回字段 updateapk,更新 apk 或更新包

  • 更新时可以在后台静默下载,下次启动是直接更新,避免更新时打断用户操作

实现

版本信息

服务端控制版本信息

版本号:整数值,一般从0开始递增

版本名称:一般为三段式,例如6.1.2

更新文件地址:http格式的url地址,更新文件地址

更新信息:总体说明更新了哪些内容

更新范围:分为不更新、小范围更新和全部更新三种情况。分别对应0、1、2三个值

更新记录

版本更新历史记录一般需要在关系型数据库中存储

更新记录主表:主键、时间、新版本号、版本名称

更新记录从表:主键、主表主键、更新信息记录

更新标识

不更新-0

更新标记为 0时,版本检测后台接口直接返回 false 「不更新」

注意:在提交更新文件前,先把更新范围改为0,表示不更新。文件更新至服务器后,再依次修改为1、2

小范围更新-1

小范围内更新,可以指定测试人员账号或设备编号等标识。服务端维护更新账号或设备信息集合。该集合可以保存到关系型数据库或redis内存数据库中。

判断当前app版本和最新版本号,如果相同,则不更新。不同,则判断当前账号或设备是否在小范围更新集合中,如果在,则更新;不在,则不更新

小范围更新也要注意流量拥挤问题,做好控制。可通过 Redis 控制一段时间内的下载人数

全部更新-2

判断当前 app 版本和最新版本号,不同,则更新。相同,则不更新

注意流量拥挤问题,做好控制。可通过 Redis 控制一段时间内的下载人数

其它