避坑指南:app新舊版本兼容問題

11 評(píng)論 12955 瀏覽 89 收藏 7 分鐘

今天和大家聊下app新舊版本上的那些坑,當(dāng)然本文不涉及什么復(fù)雜難懂的技術(shù)話語(yǔ)(其實(shí)本人也不懂),更多的是從讓用戶層更加容易接受的角度出發(fā)進(jìn)行描述。

說在前面

17年轉(zhuǎn)行做產(chǎn)品,到現(xiàn)在也算半個(gè)產(chǎn)品人了吧?!

剛開始做產(chǎn)品接觸的是web端的saas類產(chǎn)品,新功能更多的是直接web部署上線,不存在太多新老版本的問題,登陸網(wǎng)址大家就可以享用最新的功能。當(dāng)時(shí)也并不是很了解app上新老版本的一些問題,然后最近開始接觸移動(dòng)端相關(guān)的產(chǎn)品設(shè)計(jì),開始把所有新老版本的坑都走了一遍,著實(shí)難受,因此今天做下總結(jié)。

一、版本

什么是版本,簡(jiǎn)單的理解就是app store或應(yīng)用寶等市場(chǎng)提示你該軟件要更新了,更新的這個(gè)就是最新版本,只有下載了最新版本才能體驗(yàn)到app的最新功能。

一般app會(huì)有幾種方式提示你有新版本去更新:

  1. 強(qiáng)制更新,不更新就用不了(全局性強(qiáng)制和模塊式強(qiáng)制);
  2. 提示更新,可以選擇忽略;
  3. 某個(gè)功能場(chǎng)景下提示更新。

強(qiáng)制更新一般較少使用,不給用戶選擇的權(quán)利導(dǎo)致體驗(yàn)較差;提示更新是當(dāng)前較為主流的辦法,支持舊版可以正常使用的情況下告知用戶有新版本,選擇權(quán)在用戶手里。

場(chǎng)景提示更新其實(shí)也屬于提示更新,這里單獨(dú)拎出來說明一下:當(dāng)應(yīng)用功能模塊較多時(shí),當(dāng)只有涉及到一個(gè)功能模塊更新時(shí),就可以采用當(dāng)用戶使用這個(gè)模塊時(shí)進(jìn)行提示更新,提示更新仍可分為兩種:忽略和強(qiáng)制。

而更新的方式大體有兩種,大部分應(yīng)用采用通過跳轉(zhuǎn)至應(yīng)用商店讓用戶更新至最新的app:

  1. 下載整個(gè)應(yīng)用包,跳轉(zhuǎn)至應(yīng)用商店現(xiàn)在或直接進(jìn)行下載;
  2. 下載局部更新包,不需要關(guān)閉app就可完成更新。

二、功能

更多的更新方式不做贅述,什么情況下采用什么樣的更新方式呢?

我們回歸本質(zhì)的東西:版本。

每次發(fā)布app版本都是涉及到功能的更新,所以我們可以從發(fā)布的功能大小、涉及面等進(jìn)行劃分三大類:

  1. 新功能;
  2. 原功能大改版;
  3. 優(yōu)化功能。

1.1 功能對(duì)比圖

新功能和優(yōu)化功能可以看成新的模塊,舊版本就是沒有開放使用的入口,并不會(huì)影響用戶繼續(xù)使用舊版本的app,如果有需要使用最新功能則可以進(jìn)行更新。

一般這種情況下我們引導(dǎo)用戶更新,選擇權(quán)在用戶手上。

原功能大改版比較復(fù)雜,因?yàn)樯婕暗降臉I(yè)務(wù)邏輯都發(fā)生了改變,邏輯發(fā)生改變意味著數(shù)據(jù)層面的交互發(fā)生改變,數(shù)據(jù)層面發(fā)生改變就意味著數(shù)據(jù)接口需要改變。

當(dāng)然這里有兩種處理辦法:

  1. 改造原來的數(shù)據(jù)接口以支持新版;
  2. 重新寫一套接口,新舊接口共存。

1.2 新舊版本處理方式

相比于第一種半強(qiáng)制更新的辦法,第二種更加的友好,用戶有權(quán)利選擇是否去更新,但是由于需要提供兩套接口且接口需要跟著app版本走,開發(fā)成本會(huì)增加。

當(dāng)然大廠一般都是第二種方案處理的,等大部分用戶都在新版后,數(shù)據(jù)同步一致了,舊甚至是更舊版本便會(huì)強(qiáng)制用戶進(jìn)行更新,隨著版本越高,舊的接口維護(hù)起來就越不劃算。

同時(shí)采用第二種新舊接口共存仍然會(huì)存在一些問題,當(dāng)應(yīng)用功能涉及到用戶間的交互,如用戶A在用舊版,用戶B在用新版,此時(shí)兩端發(fā)生兩端交互時(shí),可能存在新版“輸出”的東西舊版識(shí)別不了。

1.3 用戶新舊版本對(duì)照

如果產(chǎn)品設(shè)計(jì)框架上本身就考慮了很多拓展性,新舊版本便不存在這些問題;如果框架上不支持,且通過兼容的方式成本又比較大,則可以引導(dǎo)舊版進(jìn)行強(qiáng)制更新的方式。

三、新老數(shù)據(jù)

當(dāng)功能發(fā)生很大變化時(shí),必會(huì)導(dǎo)致舊數(shù)據(jù)和新數(shù)據(jù)字段或功能不一的情況,假設(shè)只是原來字段的增刪改,新版通過數(shù)據(jù)的清洗保持一致即可,但是假設(shè)需要更多的其他形式的支撐,原來的數(shù)據(jù)列表情況無法支持,這時(shí)可選擇將原來的數(shù)據(jù)作為歷史數(shù)據(jù)保存一份,和最新數(shù)據(jù)分開來,也就是存在兩個(gè)數(shù)據(jù)列表:一新一舊。

1.4 新老數(shù)據(jù)

總結(jié)

產(chǎn)品從設(shè)計(jì)開始之初在框架上做好拓展性,即便后期進(jìn)行版本升級(jí),舊版本和新版本依舊可以正常使用,如果條件允許新舊版本可以保持兩套接口。新舊版不影響使用,不強(qiáng)制用戶升級(jí)對(duì)用戶使用體驗(yàn)較好;否則就只能強(qiáng)制用戶升級(jí)了。

 

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

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

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 感謝分享!想請(qǐng)教一下:“采用第二種新舊接口共存仍然會(huì)存在一些問題,當(dāng)應(yīng)用功能涉及到用戶間的交互,如用戶A在用舊版,用戶B在用新版,此時(shí)兩端發(fā)生兩端交互時(shí),可能存在新版“輸出”的東西舊版識(shí)別不了。”這個(gè)可以舉個(gè)例子說明嗎?

    來自廣東 回復(fù)
  2. 666 學(xué)到很多,贊一個(gè)

    來自北京 回復(fù)
  3. 對(duì)于工具類APP強(qiáng)制更新會(huì)引來用戶的不滿

    來自廣東 回復(fù)
  4. 迭代多次的要準(zhǔn)備一堆接口嗎?
    用戶數(shù)據(jù)是不是不跟隨版本進(jìn)行轉(zhuǎn)移?

    回復(fù)
    1. 從產(chǎn)品架構(gòu)來說,如果都是基于原來版本升級(jí),更多的是升級(jí)接口.這種情況不需要不同套接口
      迭代用戶數(shù)據(jù)肯定還在的

      回復(fù)
    2. 1、有的時(shí)候,用戶數(shù)據(jù)會(huì)因?yàn)榘姹靖?,需要變更字段的情況呢?
      2、新功能是統(tǒng)計(jì)功能,所有獲取數(shù)據(jù)方式是新寫的,只有后續(xù)的發(fā)布信息之類,才有統(tǒng)計(jì),以前的數(shù)據(jù)沒有統(tǒng)計(jì)?

      來自四川 回復(fù)
  5. 為啥不強(qiáng)制更新呢,自己給自己作么?

    來自上海 回復(fù)
    1. 每次迭代都強(qiáng)更,體驗(yàn)很差,你想一想,你在外用微信準(zhǔn)備付錢時(shí),突然提示強(qiáng)制更新,你會(huì)不會(huì)日了張小龍全家?

      來自廣東 回復(fù)
    2. 一般更新都在晚上12點(diǎn)以后咯

      來自四川 回復(fù)
    3. 那比如說12點(diǎn)更新了,我沒用微信,第二天早上才用,打開想直接付款,這時(shí)候要強(qiáng)制更新,是不是還想日張小龍

      來自四川 回復(fù)
    4. 這個(gè)比喻很形象,哈哈哈

      來自四川 回復(fù)