iOS 应用尽可能不要依赖后台

在 Github 上编辑

近年来,一些团队开始使用工作量较少的开发方式,以用户体验为代价,把更多的逻辑移向后台,将 iOS 应用作为一个展示服务器数据的瘦客户端。这种方式导致用户在网络不稳定的情况下(如:地铁、电梯或者不稳定的 WiFi)体验下降。

应用应尽可能多地在本地做业务逻辑和计算,理由如下:

  • 隐私:避免向远端服务器发送数据;
  • 速度:向服务器发送数据及等待相应需要一定时间,甚至可能失败(如:不稳定的 WiFi);
  • 流量:用户每个月使用的运营商流量通常会有限制;
  • 规模:如果应用的用户数量呈爆炸性增长,那么你必须对后端进行扩充,以保证服务稳定;
  • 电量:使用移动数据很耗电;
  • 可靠性:一些地区的 LTE/3G 连接仍然不够稳定。

大多数 iOS 应用都有一些任务依赖后台服务,例如校验、复杂的计算或数据存储。

将需要后台参与的任务数量减到最小,这样可以提升用户体验以及保护用户隐私。

应用程序中所有不需要联网的部分(如登录)应该在没有任何互联网连接的情况下工作:

  • 应用的启动界面(不适合第一时间做的任务)绝对不要等待第一个网络请求响应,因为在网络不稳定的情况下会造成极差的用户体验;
  • 如果应用的所有任务都依赖网络(如:社交应用或共享乘车应用),那么那些不需要网络连接的历史数据(如:近期行程,近期消息)也要能够正常获取(在只读模式下);
  • 应用内任何需要连接网络才能使用的功能,应当在服务器连接失败的时候显示清晰的错误信息;
  • 在某些 WiFi 热点需要登录或验证(如:酒店或机场)的场景下,HTTPS 请求会经常卡住,并且在大约一分钟后超时。在苹果在系统层面上解决这个问题之前,作为开发者的我们必须能够妥善处理这类情况;
  • 不要假设用户在第一次使用应用的时候一定有网络。用户可能安装了应用,但不会马上打开,而打开应用的时候又没有了网络连接。你应该让应用“开箱即用”并且保证应用里的资源都是最新的。部署中提到的“发布列车”可以帮助你解决每周发布的问题。