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

11 評論 13054 瀏覽 89 收藏 7 分鐘

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

說在前面

17年轉行做產品,到現在也算半個產品人了吧?!

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

一、版本

什么是版本,簡單的理解就是app store或應用寶等市場提示你該軟件要更新了,更新的這個就是最新版本,只有下載了最新版本才能體驗到app的最新功能。

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

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

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

場景提示更新其實也屬于提示更新,這里單獨拎出來說明一下:當應用功能模塊較多時,當只有涉及到一個功能模塊更新時,就可以采用當用戶使用這個模塊時進行提示更新,提示更新仍可分為兩種:忽略和強制。

而更新的方式大體有兩種,大部分應用采用通過跳轉至應用商店讓用戶更新至最新的app:

  1. 下載整個應用包,跳轉至應用商店現在或直接進行下載;
  2. 下載局部更新包,不需要關閉app就可完成更新。

二、功能

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

我們回歸本質的東西:版本。

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

  1. 新功能;
  2. 原功能大改版;
  3. 優化功能。

1.1 功能對比圖

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

一般這種情況下我們引導用戶更新,選擇權在用戶手上。

原功能大改版比較復雜,因為涉及到的業務邏輯都發生了改變,邏輯發生改變意味著數據層面的交互發生改變,數據層面發生改變就意味著數據接口需要改變。

當然這里有兩種處理辦法:

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

1.2 新舊版本處理方式

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

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

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

1.3 用戶新舊版本對照

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

三、新老數據

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

1.4 新老數據

總結

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

 

本文由 @F.yrun 原創發布于人人都是產品經理,未經許可,禁止轉載。

題圖來自 Unsplash,基于CC0協議。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 感謝分享!想請教一下:“采用第二種新舊接口共存仍然會存在一些問題,當應用功能涉及到用戶間的交互,如用戶A在用舊版,用戶B在用新版,此時兩端發生兩端交互時,可能存在新版“輸出”的東西舊版識別不了?!边@個可以舉個例子說明嗎?

    來自廣東 回復
  2. 666 學到很多,贊一個

    來自北京 回復
  3. 對于工具類APP強制更新會引來用戶的不滿

    來自廣東 回復
  4. 迭代多次的要準備一堆接口嗎?
    用戶數據是不是不跟隨版本進行轉移?

    回復
    1. 從產品架構來說,如果都是基于原來版本升級,更多的是升級接口.這種情況不需要不同套接口
      迭代用戶數據肯定還在的

      回復
    2. 1、有的時候,用戶數據會因為版本更新,需要變更字段的情況呢?
      2、新功能是統計功能,所有獲取數據方式是新寫的,只有后續的發布信息之類,才有統計,以前的數據沒有統計?

      來自四川 回復
  5. 為啥不強制更新呢,自己給自己作么?

    來自上海 回復
    1. 每次迭代都強更,體驗很差,你想一想,你在外用微信準備付錢時,突然提示強制更新,你會不會日了張小龍全家?

      來自廣東 回復
    2. 一般更新都在晚上12點以后咯

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

      來自四川 回復
    4. 這個比喻很形象,哈哈哈

      來自四川 回復