App半栈工程师经验总结

App版本更新接口的设计

2018-04-10  本文已影响599人  闲庭

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

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

总字段如下(并不是所有字段都要返回给客户端):
  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并没有用到,既然是可选字段也就是可用可不用,根据需要决定是否采用,这里来讲下他们的用处。

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

上一篇 下一篇

猜你喜欢

热点阅读