避坑指南:app新舊版本兼容問題
今天和大家聊下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ì)有幾種方式提示你有新版本去更新:
- 強(qiáng)制更新,不更新就用不了(全局性強(qiáng)制和模塊式強(qiáng)制);
- 提示更新,可以選擇忽略;
- 某個(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:
- 下載整個(gè)應(yīng)用包,跳轉(zhuǎn)至應(yīng)用商店現(xiàn)在或直接進(jìn)行下載;
- 下載局部更新包,不需要關(guān)閉app就可完成更新。
二、功能
更多的更新方式不做贅述,什么情況下采用什么樣的更新方式呢?
我們回歸本質(zhì)的東西:版本。
每次發(fā)布app版本都是涉及到功能的更新,所以我們可以從發(fā)布的功能大小、涉及面等進(jìn)行劃分三大類:
- 新功能;
- 原功能大改版;
- 優(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)然這里有兩種處理辦法:
- 改造原來的數(shù)據(jù)接口以支持新版;
- 重新寫一套接口,新舊接口共存。
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é)議。
感謝分享!想請(qǐng)教一下:“采用第二種新舊接口共存仍然會(huì)存在一些問題,當(dāng)應(yīng)用功能涉及到用戶間的交互,如用戶A在用舊版,用戶B在用新版,此時(shí)兩端發(fā)生兩端交互時(shí),可能存在新版“輸出”的東西舊版識(shí)別不了。”這個(gè)可以舉個(gè)例子說明嗎?
666 學(xué)到很多,贊一個(gè)
對(duì)于工具類APP強(qiáng)制更新會(huì)引來用戶的不滿
迭代多次的要準(zhǔn)備一堆接口嗎?
用戶數(shù)據(jù)是不是不跟隨版本進(jìn)行轉(zhuǎn)移?
從產(chǎn)品架構(gòu)來說,如果都是基于原來版本升級(jí),更多的是升級(jí)接口.這種情況不需要不同套接口
迭代用戶數(shù)據(jù)肯定還在的
1、有的時(shí)候,用戶數(shù)據(jù)會(huì)因?yàn)榘姹靖?,需要變更字段的情況呢?
2、新功能是統(tǒng)計(jì)功能,所有獲取數(shù)據(jù)方式是新寫的,只有后續(xù)的發(fā)布信息之類,才有統(tǒng)計(jì),以前的數(shù)據(jù)沒有統(tǒng)計(jì)?
為啥不強(qiáng)制更新呢,自己給自己作么?
每次迭代都強(qiáng)更,體驗(yàn)很差,你想一想,你在外用微信準(zhǔn)備付錢時(shí),突然提示強(qiáng)制更新,你會(huì)不會(huì)日了張小龍全家?
一般更新都在晚上12點(diǎn)以后咯
那比如說12點(diǎn)更新了,我沒用微信,第二天早上才用,打開想直接付款,這時(shí)候要強(qiáng)制更新,是不是還想日張小龍
這個(gè)比喻很形象,哈哈哈