美文网首页App半栈工程师经验总结
App版本更新接口的设计

App版本更新接口的设计

作者: 闲庭 | 来源:发表于2018-04-10 22:18 被阅读599次

工作这几年碰到的版本检测升级的接口也算是五花八门,啥样的都有,但肯定有的功能是有个apk的下载链接,能间接或直接提示你是强制还是非强制更新:

  • 间接是指提供你后台最新版本号,让你自己与本地版本号通过比较得出是否升级;
  • 直接就是后台接口直接返回个Boolean类型告诉你是强制或者非强制更新。

个人认为一个好的版本检测接口需要设计的更灵活更清晰用起来更方便,下面就我理解的接口设计如下(如思路有误,欢迎指正):

总字段如下(并不是所有字段都要返回给客户端):
  1.最新版本号 :newVersion
  2.最小支持版本号 : minVersion
  3.apk下载url : apkUrl
  4.更新文案 : updateDescription
  5.是否有更新 : isUpdate
  6.是否强制更新 : forceUpdate
可选字段:
  7.apk文件大小:apkSize
  8.apk的文件MD5值:md5

方案一(后端处理逻辑):
在客户端请求参数中添加当前版本号currentVersion传输给后台,由后台根据客户端传过来的当前版本号currentVersion做相应的判断后给出是否强制更新。
后端逻辑如下:

  1. 如果currentVersion < newVersion,则isUpdate = true;
    • 如果currentVersion < minVersion,则forceUpdate = true;
    • 如果currentVersion >= minVersion,则forceUpdate = false;
    • 如果有特殊需求可指定某个版本必须强制更新,如currentVersion == XXX,则forceUpdate = true;
  2. 如果currentVersion == newVersion,则isUpdate = false.

结论:
返回客户端的字段仅需要apk下载url : apkUrl更新文案 : updateDescription是否有更新 : isUpdate是否强制更新 : forceUpdate 这四个字段即可。

方案二(前端处理逻辑):
逻辑和后端处理逻辑大体上一致,只是把逻辑判断移到前台,故需要后端提供最新版本号 :newVersion最小支持版本号 : minVersionapk下载url : apkUrl更新文案 : updateDescription 这四个字段。

客户端逻辑如下:

  1. 如果currentVersion < newVersion,则有更新信息;
    • 如果currentVersion < minVersion,则需要强制更新;
    • 如果currentVersion >= minVersion,则不需要强制更新;
  2. 如果currentVersion == newVersion,则没有更新信息。

总结:
细心的你可能会发现上面的可选字段apkSize和md5并没有用到,既然是可选字段也就是可用可不用,根据需要决定是否采用,这里来讲下他们的用处。

  • apk文件大小apkSize
    这个用处可以说出于考虑用户体验,需要在升级弹框出来展示给用户将要更新的内容多大,让用户决定在非WIFI状态是否要更新,不能为了拉用户下载量或所谓的UV数直接让用户在不知道大小的情况下去直接下载(土豪用户绕路)
  • apk的文件MD5值
    这个主要是出于安全考虑吧,因为文件内容固定的话对应的md5是一样的,我们可以通过这个md5值来和下载的apk的md5值进行比较去保证我们从服务器更新下载的apk是一个完整的未被篡改的安装包,也就是说如果我们下载的apk的md5值和服务器返回的md5值相等,则说明我们下载的apk是完整的,且没有被相关有心人处理过的apk。

综上所述,这个版本更新的处理逻辑客户端和后端谁来做都可以,无关乎懒不懒的问题,个人感觉灵活性后端比客户端方便多了,毕竟后端可以指定minVersion与newVersion中间的任意一个版本强制更新,而客户端做起来就没有那么灵活了,个人见解,如有更好的方案,欢迎指教。

相关文章

  • App版本更新接口的设计

    工作这几年碰到的版本检测升级的接口也算是五花八门,啥样的都有,但肯定有的功能是有个apk的下载链接,能间接或直接提...

  • App 版本更新接口的设计

    工作这几年碰到的版本检测升级的接口也算是五花八门,啥样的都有,但肯定有的功能是有个apk的下载链接,能间接或直接提...

  • iOS检测版本更新

    利用iTunes接口检查App版本更新

  • 「安卓」App版本自动更新

    一、App版本自动更新的条件是服务器端的app版本大于本地app的版本,因此首先请求服务器接口拿到服务器端的app...

  • iOS 检查App版本更新

    可以通过 iTunes 接口检查 App 版本更新,接口为: 请求返回数很多,其中重要信息如下: 然后通过当前Ap...

  • APP更新冒险记

    一、前言 更新功能是一个App必备的初始功能,当前app的更新主要分为以下几个步骤: 1、通过接口将本地版本与服务...

  • 奇艺视频更新

    版本【1.1】版本 更新内容【添加新功能,修复接口,变为远程接口,以后不必频繁更新软件了】更新内容 新版本号【v1...

  • 在线直播聊天室设计思路

    APP接口设计思路 一、创建用户对象接口(此接口用于经常性更新): 1.用户名称(用户昵称) 2.用户设备ID码 ...

  • APP 后台REST接口定义规范学习总结

    APP接口设计规范:效率、安全、版本兼容、面向对象设计、数据格式json、服务器端异常处理、https协议; 1,...

  • 给移动端强制更新的接口

    app版本控制表 版本实体类 写给移动端的判断版本信息的接口 service接口 接口实现类 这里AppVersi...

网友评论

  • 头撞豆腐:文件的大小或者md5一般用来显示和判断用户下载了完整的安装包却没有更新,就不用二次下载直接跳转安装就行
    闲庭:@头撞豆腐 文件大小我认为就是显示给用户所用,判断一个文件的完整性用文件md5值就可以,如果要说的具体的下载逻辑,那就是先判断对应目录下该文件名的文件是否已存在且md5值相等,则不用下载,否则重新下载
  • 6cefa5752816:我在想数据表是不是还应该加一个字段,来判断安卓还是IOS,因为有些bug在IOS没问题,在安卓就不行了。
    闲庭:理论上是有的,两者版本更新信息不必一致,这里是站在一端考虑的
  • 奔跑的佩恩:你说的对,版本更新逻辑就应该后台处理,我们公司都扔给前端,一点不灵活,关键是叫后台改他还死活不愿意,简直是渣渣
    闲庭:@奔跑的佩恩 是的,有些后台就是这样,这是一个学习的过程,你给人家指出了方案人家还不做那就无药可救了,好好努力,如果是领导拍板让做,看他们做不做

本文标题:App版本更新接口的设计

本文链接:https://www.haomeiwen.com/subject/ynhscftx.html