避坑指南:app新旧版本兼容问题
今天和大家聊下app新旧版本上的那些坑,当然本文不涉及什么复杂难懂的技术话语(其实本人也不懂),更多的是从让用户层更加容易接受的角度出发进行描述。
说在前面
17年转行做产品,到现在也算半个产品人了吧?!
刚开始做产品接触的是web端的saas类产品,新功能更多的是直接web部署上线,不存在太多新老版本的问题,登陆网址大家就可以享用最新的功能。当时也并不是很了解app上新老版本的一些问题,然后最近开始接触移动端相关的产品设计,开始把所有新老版本的坑都走了一遍,着实难受,因此今天做下总结。
一、版本
什么是版本,简单的理解就是app store或应用宝等市场提示你该软件要更新了,更新的这个就是最新版本,只有下载了最新版本才能体验到app的最新功能。
一般app会有几种方式提示你有新版本去更新:
- 强制更新,不更新就用不了(全局性强制和模块式强制);
- 提示更新,可以选择忽略;
- 某个功能场景下提示更新。
强制更新一般较少使用,不给用户选择的权利导致体验较差;提示更新是当前较为主流的办法,支持旧版可以正常使用的情况下告知用户有新版本,选择权在用户手里。
场景提示更新其实也属于提示更新,这里单独拎出来说明一下:当应用功能模块较多时,当只有涉及到一个功能模块更新时,就可以采用当用户使用这个模块时进行提示更新,提示更新仍可分为两种:忽略和强制。
而更新的方式大体有两种,大部分应用采用通过跳转至应用商店让用户更新至最新的app:
- 下载整个应用包,跳转至应用商店现在或直接进行下载;
- 下载局部更新包,不需要关闭app就可完成更新。
二、功能
更多的更新方式不做赘述,什么情况下采用什么样的更新方式呢?
我们回归本质的东西:版本。
每次发布app版本都是涉及到功能的更新,所以我们可以从发布的功能大小、涉及面等进行划分三大类:
- 新功能;
- 原功能大改版;
- 优化功能。
1.1 功能对比图
新功能和优化功能可以看成新的模块,旧版本就是没有开放使用的入口,并不会影响用户继续使用旧版本的app,如果有需要使用最新功能则可以进行更新。
一般这种情况下我们引导用户更新,选择权在用户手上。
原功能大改版比较复杂,因为涉及到的业务逻辑都发生了改变,逻辑发生改变意味着数据层面的交互发生改变,数据层面发生改变就意味着数据接口需要改变。
当然这里有两种处理办法:
- 改造原来的数据接口以支持新版;
- 重新写一套接口,新旧接口共存。
1.2 新旧版本处理方式
相比于第一种半强制更新的办法,第二种更加的友好,用户有权利选择是否去更新,但是由于需要提供两套接口且接口需要跟着app版本走,开发成本会增加。
当然大厂一般都是第二种方案处理的,等大部分用户都在新版后,数据同步一致了,旧甚至是更旧版本便会强制用户进行更新,随着版本越高,旧的接口维护起来就越不划算。
同时采用第二种新旧接口共存仍然会存在一些问题,当应用功能涉及到用户间的交互,如用户A在用旧版,用户B在用新版,此时两端发生两端交互时,可能存在新版“输出”的东西旧版识别不了。
1.3 用户新旧版本对照
如果产品设计框架上本身就考虑了很多拓展性,新旧版本便不存在这些问题;如果框架上不支持,且通过兼容的方式成本又比较大,则可以引导旧版进行强制更新的方式。
三、新老数据
当功能发生很大变化时,必会导致旧数据和新数据字段或功能不一的情况,假设只是原来字段的增删改,新版通过数据的清洗保持一致即可,但是假设需要更多的其他形式的支撑,原来的数据列表情况无法支持,这时可选择将原来的数据作为历史数据保存一份,和最新数据分开来,也就是存在两个数据列表:一新一旧。
1.4 新老数据
总结
产品从设计开始之初在框架上做好拓展性,即便后期进行版本升级,旧版本和新版本依旧可以正常使用,如果条件允许新旧版本可以保持两套接口。新旧版不影响使用,不强制用户升级对用户使用体验较好;否则就只能强制用户升级了。
本文由 @F.yrun 原创发布于人人都是产品经理,未经许可,禁止转载。
题图来自 Unsplash,基于CC0协议。
感谢分享!想请教一下:“采用第二种新旧接口共存仍然会存在一些问题,当应用功能涉及到用户间的交互,如用户A在用旧版,用户B在用新版,此时两端发生两端交互时,可能存在新版“输出”的东西旧版识别不了。”这个可以举个例子说明吗?
666 学到很多,赞一个
对于工具类APP强制更新会引来用户的不满
迭代多次的要准备一堆接口吗?
用户数据是不是不跟随版本进行转移?
从产品架构来说,如果都是基于原来版本升级,更多的是升级接口.这种情况不需要不同套接口
迭代用户数据肯定还在的
1、有的时候,用户数据会因为版本更新,需要变更字段的情况呢?
2、新功能是统计功能,所有获取数据方式是新写的,只有后续的发布信息之类,才有统计,以前的数据没有统计?
为啥不强制更新呢,自己给自己作么?
每次迭代都强更,体验很差,你想一想,你在外用微信准备付钱时,突然提示强制更新,你会不会日了张小龙全家?
一般更新都在晚上12点以后咯
那比如说12点更新了,我没用微信,第二天早上才用,打开想直接付款,这时候要强制更新,是不是还想日张小龙
这个比喻很形象,哈哈哈