移动应用 · 综合

应用的版本与向后兼容

一句话: 用户会拿着旧版本用好几个月——服务端必须支持它们,也必须知道什么时候停止支持。

现实

即便开了自动更新,版本分布也会拖上几个月。任何对服务端接口的破坏性变更,都会在用户不明白为什么的情况下把真实用户打掉。

所以:扩展,不要修改。加字段,不要删;加路径,不要改已有路径的行为。

控制机制

接口版本。在每个请求里声明,这样你才知道是谁在跟你说话。

强制升级。一个拦住已不再支持版本的页面。成本很低,而且必须从第一天就在——它没法追加到一个旧版本里。

功能开关。按版本和用户比例远程开关功能。

什么时候停止支持

按数据决定,不按感觉:当某个版本占活跃使用不到百分之一,并且在应用内提前通知之后。把策略写下来,免得每次发布都重新讨论一遍。

深入一层

每次服务端发布,都对最近两个受支持版本跑一遍针对当前接口的集成测试。没有自动测试的向后兼容会静默地坏掉,而且只会在商店评价里才浮现出来。