社区主页 文章详情

为什么 iOS 的微信没有常驻后台,也能收到新消息通知

少数派sspai 19-10-25 关注
随着 iPhone 11 和 iPhone 11 Pro 的发布,iFixit 也在随后展示了三款新机型的拆解文章 。根据拆解情况来看,三款手机均采用了 4 GB 的 RAM。相较之下,同样于近期发布的 Google Pixel 4 则采用了更大的 6 GB 内存。而如果把目光放到国内的 Android 阵营,8 GB 甚至 10 GB 的内存参数也早已不算新鲜。

回溯过往就会发现,iPhone 在内存大小上始终比同代的 Android 机型保守许多。但较小的内存并没有对 iPhone 的竞争力产生影响。这一切还要多亏 iOS 的内存管理机制。
为什么 iOS 的微信没有常驻后台,也能收到新消息通知
历代 iPhone 内存变化(单位:GB)
经过一代代的迭代和完善,iOS 的内存管理从最初的严苛逐渐多样化,在保持了对内存的严格管理的基础上,也针对不同应用的需求,提供了更多的解决方案。
首先需要介绍的,是苹果的消息推送服务 APNs(Apple Push Notification service)。借助这一功能,应用可以在不保留后台进程的情况下,正常地接收消息和推送。
在一般情况下,应用接收到的消息,是直接从其服务器端传至应用。这样的操作虽然环节较少,但是需要应用始终在后台保留进程,自然也就增加了对内存的需求。
为什么 iOS 的微信没有常驻后台,也能收到新消息通知
相较之下,APNs 服务新增了不少环节。应用服务器端发来的消息不会再直接传送给应用本身。作为替代,推送会借助系统的服务器传输给 iOS 系统,并由后者弹出通知横幅。当你通过横幅打开应用时,应用才会开始从服务器段接收更新,并显示新内容。这也是为什么有时我们收到微信消息后,往往打开应用还需要等待一段时间才能看到消息内容。
为什么 iOS 的微信没有常驻后台,也能收到新消息通知
APNs(来源:sspai.com/post/55884)
尽管这样的设定带来了一些延迟,但其好处也非常明显。应用不再需要在后台保留进程,从而极大节省了内存空间。APNs 自从在 iOS 2.0 中推出后,便一直被沿用至今。那时的 iOS 系统,还未有「后台运行」的概念,所有应用在切至后台后都会被直接中止进程。正是得益于这一功能,早年 iOS 严格的后台管理才不会影响应用的正常功能。
不过,消息接收和推送并不是应用后台常驻的问题的全部。一部分应用由于其功能所需,即使在被切至后台后也不应该被中止进程。iOS 也为这一类应用提供了「网开一面」的待遇:只要应用的功能包含音频播放、语音通话、GPS 定位等,就可以在后台保持运行,不存在被系统「杀后台」的问题。这样的设定非常自然,避免了诸如微信被切至后台后,语音通话中断等问题。
为什么 iOS 的微信没有常驻后台,也能收到新消息通知
不同功能的后台运行模式也不同
除了上文提到的情况,iOS 还于 iOS 7 提供了新的后台选项:后台应用刷新。
借助这一特性,iOS 系统的应用可以实现在后台获取通知,传输数据。例如,新闻资讯 App 可以在后台接收内容更新,从而在你打开应用前就加载完毕最新的消息内容。不过,具体的后台使用时段却并非由应用本身控制,而是由 iOS 系统统一安排,从而防止应用滥用后台权限,占用过多内存的问题。

随着 iOS 13 的发布,苹果也引入了新的后台管理机制。借助设备端的机器学习,iOS 系统可以更为智能地为应用安排后台计划,更好地实现应用后台需求和设备内存管理之间的平衡。关于 iOS 系统的后台管理,你可以在 Power+ 这篇文章《 从极度克制到逐步开放:iOS 的后台运行进化之路 》中了解更多。

参考文章:


未经授权,不得转载

展开阅读全文

打开App,查看更多好文内容
全部评论 (7)
titi2013
2
2019-10-25

为什么 iOS 的微信这么费电

梦剧场的小孩
1
2019-10-25

国内安卓没有GMS,无法走谷歌统一推送,之前工信部牵头搞的中国统一推送标准又推不动,各厂商做的自己的推送平台微信又不愿意接,能咋办呢

空心菜123
0
2019-11-23
叫我305389679: 因为推送是经由苹果服务器推送,ios微信抢红包会不会慢人一步? 1

会。字数统计

janeyre
0
2019-11-02

这篇文章像是十年前穿越过来的

没头脑-
0
2019-10-27

ios13严重杀后台是我iPhone7不行了吗

打开App,查看更多好文和评论
猜你喜欢
编辑精选
相关商品推荐
5
16
7
你已经点过赞了
新浪微博 QQ空间 微信好友 豆瓣
当前为触屏版
热门搜索