App版本更新:后臺(tái)實(shí)現(xiàn)策略梳理

20 評論 38236 瀏覽 259 收藏 7 分鐘

后臺(tái)如何實(shí)現(xiàn)對App版本更新的管理?本文中梳理了兩種App版本更新的實(shí)現(xiàn)策略,分別以歷史版本和最新版本為更新依據(jù)進(jìn)行展開介紹,供大家參考討論。

App升級(jí)更新方式包括:強(qiáng)制更新、非強(qiáng)制提示更新、非強(qiáng)制不提示更新等,這些內(nèi)容我們可以依靠常識(shí)總結(jié)出來,但管理后臺(tái)不是上傳新安裝包就可以實(shí)現(xiàn)版本管理的,如何通過管理后臺(tái)實(shí)現(xiàn)對App版本的管理,以及對歷史版本的處理邏輯等內(nèi)容更加值得我們?nèi)パ芯俊?/p>

簡言之,本文闡述與解決的問題是:后臺(tái)如何實(shí)現(xiàn)對App版本更新的管理?

版本更新等功能是App的基礎(chǔ)功能,沒有經(jīng)歷項(xiàng)目從0到1的過程,接觸這部分功能模塊就會(huì)少一些,這也是想要和大家分享的這部分經(jīng)驗(yàn)的原因。

回顧做過的項(xiàng)目,本文中梳理了兩種App版本更新的實(shí)現(xiàn)策略,供大家參考討論。

以歷史版本為更新依據(jù)的實(shí)現(xiàn)策略

標(biāo)題有點(diǎn)繞嘴, 我們不妨先看一張?jiān)蛨D:

以上圖為例,暫時(shí)忽略上傳新版本安裝包與列表查詢區(qū),只關(guān)注版本管理列表中iOS的相關(guān)內(nèi)容。

上述App的iOS版共存在4個(gè)版本:2.0(當(dāng)前最新版本)、1.2、1.1與1.0,其中iOS與Android最新版本有且只能各有一個(gè),修改版本狀態(tài)時(shí)需進(jìn)行校驗(yàn)。

在例子中,2.0為最新版本,1.2為提示升級(jí)、1.1為強(qiáng)制升級(jí)、1.0為不提示升級(jí)。各版本用戶啟動(dòng)App后,依照用戶所用版本的狀態(tài)給予用戶相應(yīng)的升級(jí)提示。

這種實(shí)現(xiàn)方案的核心在于:歷史版本均有各自的狀態(tài),根據(jù)歷史版本的狀態(tài)決定前端的更新方式。

校驗(yàn)流程如下:

上述策略的優(yōu)缺點(diǎn)如下:

策略優(yōu)勢:靈活控制各個(gè)歷史版本的升級(jí)方式,可以指定修復(fù)相應(yīng)的歷史版本,不會(huì)操成大規(guī)模的“誤傷”;

策略劣勢:每次發(fā)版都需要對歷史版本進(jìn)行狀態(tài)修改,如果接口變動(dòng)對歷史版本產(chǎn)生影響,需明確出對那些歷史版本有影響,也就要求了上傳新版本的PM需要對歷史版本有重新的了解。

上述實(shí)現(xiàn)方式,在To C的產(chǎn)品中應(yīng)用較多,其劣勢也可以人為規(guī)避,對于上述劣勢如果大家有解決方案,也歡迎各位留言交流。

以最新版本為更新依據(jù)的實(shí)現(xiàn)策略

話不多說,我們同樣先來看一張?jiān)蛨D:

以上圖為例,依舊關(guān)注版本管理列表相關(guān)內(nèi)容,其中iOS與Android版本狀態(tài)為有效(也就是最新版本)有且只能各有一個(gè),該部分修改版本狀態(tài)時(shí)需進(jìn)行校驗(yàn)。

當(dāng)前版本狀態(tài)為有效,看對應(yīng)的強(qiáng)制更新狀態(tài):

a、如最新版本為強(qiáng)制更新,則用戶啟動(dòng)App后需要強(qiáng)制更新(所用版本不是最新版本);

?b、如最新版本為非強(qiáng)制,則為提示更新(如需要非提示更新,可以再增加一個(gè)字段校驗(yàn),本文不再贅述)。

這種實(shí)現(xiàn)方案的核心在于:根據(jù)最新版本的狀態(tài)決定前端的更新方式。

其校驗(yàn)流程如下:

上述策略的優(yōu)缺點(diǎn)如下:

策略優(yōu)勢:簡單直接,無需了解歷史版本所用的接口信息;

策略劣勢:

  • 存在“誤傷”,會(huì)擴(kuò)大強(qiáng)制更新用戶的范圍,舉個(gè)例子,新上線版本存在重大BUG,需要重新發(fā)版,針對存在BUG的版本需強(qiáng)制更新,這樣的場景下,上述更新方式會(huì)強(qiáng)迫所有用戶強(qiáng)制更新,擴(kuò)大了傷害范圍。
  • 用戶不連貫使用時(shí),會(huì)產(chǎn)生漏洞,舉個(gè)例子,用戶使用1.0版本,1.1版本強(qiáng)制更新,1.2版本非強(qiáng)制升級(jí),在1.1到1.2期間,用戶未啟動(dòng)App,當(dāng)用戶再次使用App時(shí),當(dāng)前最新版本為1.2,版本檢查為非強(qiáng)制更新,這樣的場景,就影響了用戶的正常使用,因?yàn)橛脩翦e(cuò)過了1.1的強(qiáng)制更新,極有可能影響接口正常使用。

可用的解決方案:在版本更新校驗(yàn)時(shí),可增加一項(xiàng)校驗(yàn),用戶使用版本與最新版本之間存在強(qiáng)制更新版本,則該次升級(jí)即為強(qiáng)制更新,使用該方案可以解決劣勢中的問題2。

幾句總結(jié)的話

上述兩種解決方案各有利弊,都存在很大的可優(yōu)化空間,本文權(quán)作拋磚引玉,希望大家可以在基礎(chǔ)性功能設(shè)計(jì)上有些參考。

很多時(shí)候,能把白菜炒好吃的廚師才是好廚師,能把基礎(chǔ)功能設(shè)計(jì)完善的PM才是好的PM。產(chǎn)品之路修遠(yuǎn)兮,需要上下而求索。

 

作者:張小墨,微信公眾號(hào):月光坦克(moontank1918),某美股上市互聯(lián)網(wǎng)公司產(chǎn)品經(jīng)理。

本文由 @張小墨 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評論
評論請登錄
  1. 希望可以講一些版本發(fā)布后的功能,比如是否可以撤回?機(jī)制是?

    來自北京 回復(fù)
  2. app進(jìn)行迭代幾個(gè)版本后,才做版本更新彈窗提示,之前舊的版本是否可以實(shí)現(xiàn)版本更新彈窗提示

    回復(fù)
  3. 第一種策略方案 “是否為最新版本”這個(gè)判斷沒必要吧?

    來自山東 回復(fù)
  4. 基于歷史版本的更新策略,修改版本號(hào)時(shí)進(jìn)行校驗(yàn),是比對上傳的版本和當(dāng)前最新版本的安裝包文件嗎?

    來自北京 回復(fù)
  5. 大佬,iOS不是在官方渠道進(jìn)行版本更新么,也可以在自己后臺(tái)上傳么?

    來自北京 回復(fù)
    1. 這里分為兩種,一種是發(fā)布到App Store的,一種是企業(yè)內(nèi)部應(yīng)用,但是不管是那種,最終的版本管理還是在自己的管理后臺(tái)的,只是發(fā)布在App Store的,在管理后臺(tái)只需要配置下載地址就好了,但是強(qiáng)制更新與非強(qiáng)制更新等策略還是需要在自己的管理后臺(tái)實(shí)現(xiàn)

      來自北京 回復(fù)
    2. 這個(gè)后臺(tái)其實(shí)就是控制app的更新彈窗的,和提審過程沒關(guān)系啊

      來自廣東 回復(fù)
  6. 我這里也沒有動(dòng)版本無效是指什么?

    回復(fù)
    1. 可以參考前一個(gè)讀者的問題回復(fù)

      回復(fù)
  7. 比如版本無效是指什么,有效是指什么,小白恰好碰到這個(gè)需求,求教

    來自北京 回復(fù)
    1. 在不同的升級(jí)實(shí)現(xiàn)邏輯下,這里的版本狀態(tài)的定義是不同的,我用“以歷史版本為更新依據(jù)的實(shí)現(xiàn)策略”的舉個(gè)例子,這里的狀態(tài)包括:最新版本;提示升級(jí);強(qiáng)制升級(jí);不提示升級(jí),且最新版本有且只能有一個(gè),用戶側(cè)安裝的App版本不同,對應(yīng)的版本狀態(tài)也就不用,如果用戶A使用的是“強(qiáng)制升級(jí)”版本狀態(tài)的App,那當(dāng)用戶啟動(dòng)App進(jìn)行版本校驗(yàn)后,就會(huì)給用戶進(jìn)行“強(qiáng)制更新”提示。

      來自北京 回復(fù)
    2. 有效無效的問題產(chǎn)生在“以最新版本為更新依據(jù)的實(shí)現(xiàn)策略“
      麻煩以這個(gè)為例解釋一下誒

      來自四川 回復(fù)
    3. 以最新版本為更新依據(jù),相對粗暴,此時(shí)的版本狀態(tài)就兩種:有效和無效,有效的版本有且只有一個(gè)就是最新版本??催@個(gè)有效狀態(tài)的是否強(qiáng)制更新,就決定了歷史版本以何種方式更新至最新版。

      來自北京 回復(fù)
    4. 對失效的版本記錄,進(jìn)行編輯有什么意義呢,失效的版本去掉編輯按鈕是不是更合理

      來自江蘇 回復(fù)
    5. 我覺得應(yīng)該是表述語言有點(diǎn)歧義,如果將有效狀態(tài)換成最新版本,無效狀態(tài)換成歷史版本,可能不會(huì)產(chǎn)生那么多歧義

      來自上海 回復(fù)
    6. 歷史版本的編輯有何意義呢,兄臺(tái)能跟我說下嗎,我實(shí)在是理解不了,編輯歷史版本的意義

      來自江蘇 回復(fù)
  8. 請問,版本狀態(tài)的定義是什么呢?

    來自北京 回復(fù)
  9. 以最新版本為更新依據(jù)的實(shí)現(xiàn)策略,這個(gè)可以優(yōu)化一下,避免劣勢。1、檢測當(dāng)前版本,如果當(dāng)前版本不是最新版本時(shí)。2、先處理“強(qiáng)制更新”的策略

    來自上海 回復(fù)
  10. ,熱更新是不是不需要進(jìn)行后臺(tái)設(shè)置?熱更新不是也可以實(shí)現(xiàn)更新嗎

    來自廣東 回復(fù)
    1. 是的,不過iOS系統(tǒng)從2017年就在管控?zé)岣铝?,就是熱更新可以跳過App Store的審核,所以現(xiàn)在一般在iOS系統(tǒng)下,很少有人用熱更新了

      來自北京 回復(fù)