App版本更新接口的設(shè)計

工作這幾年碰到的版本檢測升級的接口也算是五花八門,啥樣的都有拓哟,但肯定有的功能是有個apk的下載鏈接主到,能間接或直接提示你是強制還是非強制更新

  • 間接是指提供你后臺最新版本號,讓你自己與本地版本號通過比較得出是否升級或強制升級阴挣;
  • 直接就是后臺接口直接返回個Boolean類型告訴你是強制或者非強制更新气堕。

個人認為一個好的版本檢測接口需要設(shè)計的更靈活更清晰用起來更方便,下面就我理解的接口設(shè)計如下(如思路有誤,歡迎指正):

總字段如下(并不是所有字段都要返回給客戶端):
  1.最新版本號 :newVersion
  2.最小支持版本號 : minVersion
  3.apk下載url : apkUrl
  4.更新文案 : updateDescription
  5.是否有更新 : isUpdate
  6.是否強制更新 : forceUpdate
可選字段:
  7.apk文件大芯グ拧:apkSize
  8.apk的文件MD5值:md5

方案一(前端處理邏輯):
前端調(diào)用獲取當前服務(wù)器端最新版本信息的接口揖膜,然后根據(jù)返回的服務(wù)器端最新版本信息與客戶端當前版本信息進行比較,此處需要后端提供最新版本號 :newVersion 梅桩、 最小支持版本號 : minVersion 壹粟、apk下載url : apkUrl更新文案 : updateDescription 這四個字段宿百。如下表:

字段 字段描述
newVersion 最新版本號
minVersion 最小支持版本號
apkUrl apk下載url
updateDescription 更新文案

客戶端邏輯如下:

  1. 如果currentVersion < newVersion,則有更新信息趁仙;
    • 如果currentVersion < minVersion,則需要強制更新;
    • 如果currentVersion >= minVersion,則不需要強制更新;
  2. 如果currentVersion == newVersion犀呼,則沒有更新信息幸撕。

客戶端對應(yīng)的流程圖:

更新處理邏輯放客戶端.png

前端處理邏輯不足之處:
對指定版本進行強制更新可能不是那么好,可是為什么要對指定版本進行更新呢外臂?
此處做個假設(shè):你的應(yīng)用當前線上運行版本為V2.1.1, V2.1.2兩個版本用戶量比較多坐儿,又快要發(fā)布V2.1.3了,此時發(fā)現(xiàn)V2.1.2有個bug需要修復(fù)一下宋光,然后在V2.1.3修復(fù)后發(fā)布了貌矿,當時感覺小問題就非強制更新(畢竟強制更新比較反感),過了幾天查看V2.1.1, V2.1.2版本的用戶量依然不減罪佳,升級的積極性不高啊逛漫,可是現(xiàn)在發(fā)現(xiàn)V2.1.2的這個bug風險很大,一旦出問題要卷鋪蓋走人的地步赘艳,那就要強制更新了酌毡,可又不想影響V2.1.1和V2.1.3版本的用戶(對強制更新比較反感),此時想到要是能對V2.1.2一個版本強制更新就好了蕾管。
備注:此場景只是一個假設(shè)枷踏,當然即便碰到這個假設(shè),只要前期設(shè)計的合理都能解決掰曾,比如:

  • 后端說我再多返回一個字段forceUpdateList給你旭蠕,內(nèi)容為指定版本強制更新的版本號列表,只要當前版本在該列表中就強制更新旷坦。(此方案前端表示想哭)
  • 或者不想要強制更新的版本號列表也可以掏熬,給你個字段forceUpdateVersion表示需要強制更新的版本信息,用正則匹配,如果匹配到的版本號就強制更新秒梅。(前端能做旗芬,后端也能做,看誰能說服誰了)
  • 可能也有人會說熱修復(fù)或者插件化表示不擔心捆蜀,那就繞過吧岗屏,此處目的是為了分析版本升級的最優(yōu)方案辆琅。

方案二(后端處理邏輯):
在客戶端請求參數(shù)中添加當前版本號currentVersion傳輸給后臺,由后臺根據(jù)客戶端傳過來的當前版本號currentVersion做相應(yīng)的判斷后給出是否強制更新这刷。
后端邏輯如下:

  1. 根據(jù)是否有特殊需求可指定某個版本必須強制更新,如currentVersion == XXX,則forceUpdate = true;
  2. 如果currentVersion < newVersion,則isUpdate = true娩井;
    • 如果currentVersion < minVersion,則forceUpdate = true暇屋;
    • 如果currentVersion >= minVersion,則forceUpdate = false;
  3. 如果currentVersion == newVersion,則isUpdate = false.

后端邏輯對應(yīng)流程圖:

更新處理邏輯放后端.png

結(jié)論:
返回客戶端的字段僅需要apk下載url : apkUrl洞辣、更新文案 : updateDescription咐刨、是否有更新 : isUpdate是否強制更新 : forceUpdate 這四個字段即可扬霜。如下表:

字段 字段描述
apkUrl apk下載url
updateDescription 更新文案
isUpdate 是否有更新
forceUpdate 是否強制更新

總結(jié):
細心的你可能會發(fā)現(xiàn)上面的可選字段apkSize和md5并沒有用到定鸟,既然是可選字段也就是可用可不用,根據(jù)需要決定是否采用著瓶,這里來講下他們的用處联予。

  • apk文件大小apkSize
    這個用處可以說出于考慮用戶體驗,需要在升級彈框出來展示給用戶將要更新的內(nèi)容多大材原,讓用戶決定在非WIFI狀態(tài)是否要更新沸久,不能為了拉用戶下載量或所謂的UV數(shù)直接讓用戶在不知道大小的情況下去直接下載(土豪用戶繞路)
  • apk的文件MD5值
    這個主要是出于安全考慮吧余蟹,因為文件內(nèi)容固定的話對應(yīng)的md5是一樣的卷胯,我們可以通過這個md5值來和下載的apk的md5值進行比較去保證我們從服務(wù)器更新下載的apk是一個完整的未被篡改的安裝包,也就是說如果我們下載的apk的md5值和服務(wù)器返回的md5值相等威酒,則說明我們下載的apk是完整的窑睁,且沒有被相關(guān)有心人處理過的apk。

綜上所述葵孤,這個版本更新的處理邏輯客戶端和后端誰來做都可以担钮,無關(guān)乎懶不懶的問題,個人感覺靈活性后端比客戶端方便多了佛呻,當然客戶端也能做裳朋,只是客戶端做起來前期準備工作要考慮周全,各種場景都要考慮進去(還是會存在一些未知場景)吓著,不然只能下個版本實現(xiàn)了鲤嫡,考驗?zāi)阍O(shè)計能力的時候到了。以上純屬個人見解绑莺,如有更好的方案暖眼,歡迎指教。

2021期待與你一起共事纺裁,點擊查看崗位

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末诫肠,一起剝皮案震驚了整個濱河市司澎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌栋豫,老刑警劉巖挤安,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丧鸯,居然都是意外死亡蛤铜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門丛肢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來围肥,“玉大人,你說我怎么就攤上這事蜂怎∧驴蹋” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵杠步,是天一觀的道長氢伟。 經(jīng)常有香客問我,道長篮愉,這世上最難降的妖魔是什么腐芍? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮试躏,結(jié)果婚禮上猪勇,老公的妹妹穿的比我還像新娘。我一直安慰自己颠蕴,他們只是感情好泣刹,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著犀被,像睡著了一般椅您。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上寡键,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天掀泳,我揣著相機與錄音,去河邊找鬼西轩。 笑死员舵,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的藕畔。 我是一名探鬼主播马僻,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼注服!你這毒婦竟也來了韭邓?” 一聲冷哼從身側(cè)響起措近,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎女淑,沒想到半個月后瞭郑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡鸭你,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年凰浮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苇本。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡姊途,死狀恐怖萧落,靈堂內(nèi)的尸體忽然破棺而出胆胰,到底是詐尸還是另有隱情雹姊,我是刑警寧澤陕截,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布果元,位于F島的核電站丹喻,受9級特大地震影響椒惨,放射性物質(zhì)發(fā)生泄漏贱鄙。R本人自食惡果不足惜劝贸,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逗宁。 院中可真熱鬧映九,春花似錦、人聲如沸瞎颗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哼拔。三九已至引有,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間倦逐,已是汗流浹背譬正。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留檬姥,地道東北人曾我。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像穿铆,于是被迫代替她去往敵國和親您单。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理荞雏,服務(wù)發(fā)現(xiàn)虐秦,斷路器平酿,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,749評論 25 707
  • 【七言律詩】《游太行》 當代/蜀山倦客 太行峰石早聞名,入地通天出物情悦陋。 擼袖登攀千壁絕蜈彼,回頭嘆誤眾仙迎。 可...
    寺咀山主人閱讀 727評論 6 13
  • 她輕輕走過我身邊俺驶,悄悄帶走我的心幸逆。 6月17號晚上我撿回她。這個開頭很俗套暮现,她帶著噴香的皮膚和充滿酒味的紅色臉頰还绘,...
    夢蝶Ariel閱讀 580評論 0 0
  • 《生活》 夢。 在上完現(xiàn)當代文學欣賞課后栖袋,我深深被課文的內(nèi)容打動拍顷,更是在老師述說自己婚后生活后更是感慨萬分,特別想...
    柳晞閱讀 186評論 0 0