前几天,@文刀漢三 给我发来一篇 WWDC 期间的外媒报道,标题是《Google Photos backups may actually work on iOS 13 w/ background tasks API》。报道以「Google Photos 在后台时自动备份新照片」这个场景为例,说明 iOS 13 中名为 BackgroundTasks 的新框架(Framework)能让应用在后台时执行计划任务:

iOS 13 adds a new background tasks API to the platform which allows apps to schedule activities to run in the background without forcing users to open the app and let it run in the foreground.

那么,这个新框架的出现是否意味着 iOS 进入了「真后台」的时代呢?答案是否定的,而且我认为所谓的「真后台」一点也不重要。

对于手机的使用者来说,只要我们最为关心的需求得到满足了就可以,例如:Google Photos 在后台或者熄屏状态能够完成备份,而不需要我们将其保持在前台。如前面提到的文章所言,这点在 iOS 13 的新框架下是可以实现的。当然,新的 BackgroundTasks 框架的能力也不仅仅是这些。 

Google Photos 提供了无限的照片存储空间

考虑到有些人还执着于所谓的「真后台」,我想借着这个机会,全面讨论一下「应用后台运行」这个话题,根据时间顺序回顾一下 iPhone 发布以来,iOS 系统提供给应用的后台能力的发展历程。当然,也会介绍 iOS 13 的全新后台能力,以及可能的一些使用场景。

全文结构如下,可以自行选择感兴趣的部分阅读:

  • 为什么我们想要后台任务?以及什么是真后台?
  • 为什么 iOS 对后台的限制如此严格?
  • iOS 后台能力的 3 个里程碑
  • iOS 13 的新框架/新接口究竟提供了什么能力?
  • 总结

为什么我们在意任务的后台运行?

想象一下,你在微信发送一条消息,然后切换到后台。过了一段时间,你再次打开微信,发现刚才那条消息因为网络不通畅没有发出。这样的情况能够接受吗?当然不能,但这样的情况在移动互联网早期,或者说 iOS 4 及之前的时代是屡见不鲜的,一方面是网络不通畅,另一方面是应用在后台没有了运行的权限。