App 版本更新介面的設計
工作這幾年碰到的版本檢測升級的介面也算是五花八門,啥樣的都有,但肯定有的功能是有個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 中間的任意一個版本強制更新,而客戶端做起來就沒有那麼靈活了,個人見解,如有更好的方案,歡迎指教。