工作这几年碰到的版本检测升级的接口也算是五花八门,啥样的都有,但肯定有的功能是有个apk的下载链接,能间接或直接提示你是强制还是非强制更新:
间接是指提供你后台最新版本号,让你自己与本地版本号通过比较得出是否升级;
直接就是后台接口直接返回个Boolean类型告诉你是强制或者非强制更新。
个人认为一个好的版本检测接口需要设计的更灵活更清晰用起来更方便,下面就我理解的接口设计如下(如思路有误,欢迎指正):
总字段如下(并不是所有字段都要返回给客户端):
1.最新版本号 :newVersion
2.最小支持版本号 : minVersion
3.apk下载url : apkUrl
4.更新文案 : updateDescription
5.是否有更新 : isUpdate
6.是否强制更新 : forceUpdate
方案一(后端处理逻辑):
在客户端请求参数中添加当前版本号currentVersion传输给后台,由后台根据客户端传过来的当前版本号currentVersion做相应的判断后给出是否强制更新。
后端逻辑如下:
如果currentVersion < newVersion,则isUpdate = true;
如果currentVersion < minVersion,则forceUpdate = true;
如果currentVersion >= minVersion,则forceUpdate = false;
如果有特殊需求可指定某个版本必须强制更新,如currentVersion == XXX,则forceUpdate = true;
如果currentVersion == newVersion,则isUpdate = false.
结论:
返回客户端的字段仅需要apk下载url : apkUrl、更新文案 : updateDescription、是否有更新 : isUpdate 、 是否强制更新 : forceUpdate 这四个字段即可。
方案二(前端处理逻辑):
逻辑和后端处理逻辑大体上一致,只是把逻辑判断移到前台,故需要后端提供最新版本号 :newVersion 、 最小支持版本号 : minVersion 、apk下载url : apkUrl 、更新文案 : updateDescription 这四个字段。
客户端逻辑如下:
如果currentVersion < newVersion,则有更新信息;
如果currentVersion < minVersion,则需要强制更新;
如果currentVersion >= minVersion,则不需要强制更新;
如果currentVersion == newVersion,则没有更新信息.
综上所述,这个处理逻辑客户端和后端谁来做都可以,无关乎懒不懒的问题,个人感觉灵活性后端比客户端方便多了,毕竟后端可以指定 minVersion 与 newVersion 中间的任意一个版本强制更新,而客户端做起来就没有那么灵活了,个人见解,如有更好的方案,欢迎指教。