防止提交 AppStore 各种事故的发生

本文列举了多个知名软件出现线上事故的例子,包括百度云、新浪微博等,并深入分析了事故原因及预防措施,如使用DEBUG宏禁用调试代码、版本管理下的配置审查等。

6 月 18 日上午,百度云 iOS 版出现了线上事故,他们在提交 AppStore 审核的时候,把名字给弄错了。用户更新 App 之后,看到的 App 名字是 netdisk_iPhone,如下图所示。此后,百度在当天紧急提交了一个加急版本,修复了该问题。

百度云在 AppStore 总榜中排名 50 名左右,这次事故虽然不太影响用户使用,但是确实会给用户感觉到一些困扰。比如因为它的名字实际上不存在,所以当它想获取 PUSH 消息权限时,弹出来的对话框是如下图这样。用户很可能会觉得奇怪,从而点击 “不允许”。

在大厂里面,不止百度犯过错误,大约在一年前,新浪微博的客户端不小心把调试选项给加包到了正式功能中。于是大家都乐坏了,各种给自己加 VIP 效果,当然,服务器端的验证逻辑还是存在的,所以倒也并没有产生非常大的事故。下图是当时新浪微博事故 App 的截图。

也不能光说别人,其实我们公司前段时间也出现了一个线上事故。猿辅导 App 不小心把测试版给提交到 AppStore 上了,但是由于测试服务器地址不是对外网公开的,于是更新了的同学就无法正常使用 App 了。这个事故大概影响了我们将近一天时间,线上服务完全连不上,算是比较严重的了。

我见过的最最严重的事故,大概是两年前,某个上市公司出的金融类应用,在打包的时候,不小心把源代码打进了 IPA 里面。这个行为恰好被喜欢解 IPA 随意翻翻的 BeeFramework 的老郭看到了,于是大家一起围观了一下它的代码。好在大家都是圈内人,没什么恶意,所以也没有公开此事。不然,用这个代码随意做一些社交机器人或者抓取机器人还是挺容易的。

好了,关键来了。如何防止这类事故发生呢?我觉得做到以下几点应该就可以了:

  1. 不需要到线上的调试代码,需要用 DEBUG 宏在代码里面明确禁掉。
  2. 将整个工程的配置,用 shared scheme 的方式,放在版本管理之下,所有的配置改动,都需要进行 review。
  3. 使用自动打包的脚本,不依赖人工进行打包操作。
  4. 在正式上线前,用苹果的 TestFlight 进行测试。TestFlight 的测试包可以做到和线上的包完全一致,所以像以上提到的所有问题,都可以在这一个环节发现。

百度云的这次事故,很可能的原因是被开发误删除了配置中的 App Name,如果采用上面的步骤,那么在第二步和第四步中,将会发现这个问题。


来自 唐巧的技术博客


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值