多客科技 发表于 2025-2-24 02:49

你的 iPhone 收不到微信,可能是 iOS 的优势之处

作者:微信文章


上个月底微信支持「Callkit」刷屏了。

很多人说终于不会漏微信电话了。

之前要不压根没收到通知。

要不收到的时候对方都挂了。

你们肯定遇到过。



有小伙伴在后台问。

不光微信,有时其他通知也会收不到。

这究竟是 App 的问题?

还是 Apple 的问题?

本篇来研究下。
推送是谁推的?

要搞明白是谁的问题。

得先知道 iOS 消息推送的原理。

我们直觉上朴素地以为。

应用通知就是由 App 推送到手机上的。



但实际上 iOS 不太一样。

iOS 的 App 执行「墓碑机制」。

只要你退出软件一阵子。

软件就在后台完全冻结。

没有联网拉取通知的能力。



那通知是哪来的?

我们以微信为例。

当别人给你发了消息。

消息是先传到了微信服务器。

微信服务器收到后会立即通知苹果:

「微信想弹出一条通知,内容是....」

等待苹果服务器收到后。

再转发给你的手机。

最后弹出通知:



这套流程就是苹果的 Apple Push Notification service (苹果推送通知服务,APNs)



它绕过了 App 完成系统级推送。

这就是为什么你明明收到了推送。

但打开微信还要转几圈「收取中」。

才能在对话框看到新消息。

因为通知和对话框用的不是同一套系统。



那问题来了。

iOS 绕一大圈来推送消息是有啥好处呢?

原因很简单也很直白。
记得安卓会卡顿吗?

现如今安卓很流畅了。

但我们把时间如果倒回十多年前。

iOS 的代表就是流畅。

安卓的问题就是卡顿。

原因就是安卓没有类似苹果的消息推送服务。


应用为了能实现即时推送通知。

都给自己 App 留了个后台。

这样的问题有两个:

1、占内存,所以安卓机内存都要很大。

2、卡顿,耗电,发热大。



如今 iPhone 16 Pro 的内存才 8GB。

约等于五六年前安卓旗舰的水平。

并且用起来也比安卓流畅。

APNs 功不可没。

这给库克省了不少内存钱。



但 APNs 也不是没有坏处

但 APNs 也是有点缺点的。

毕竟通知推送的步骤更长更复杂。

通知丢失、延迟推送都是常见的 Bug.

哪怕 APNs 再完善,通知到达率有 99.99%

面对每天全球 1500 亿条(推算结果)的通知推送。



左丢一条,右丢一条的,也很难避免。

但奈何它好管理、不占内存、又省电。

所以一直以来瑕不掩瑜。

那这东西这么好。

为什么安卓学不来呢?
安卓其实有在学,但谷歌和我们无关

时间倒回 2012 年。

谷歌推出了 Google Cloud Messaging(谷歌云消息, GCM)

两年后的 2014 年,又收购了数据公司 Firebase.

并将服务整合为 Firebase Cloud Messaging(FCM).

并沿用至今。



这是个啥呢?

它的功能其实和 APNs 差不多。

但谷歌不强制 Play 商店上的应用接入。

加上安卓允许侧载,FCM 的号召力就没有苹果这么强。

并且因为众所周知的原因。

国内的安卓没有搭上谷歌的顺风车。

所以……
安卓车上有各造的各的轮子

谷歌推送服务的缺位。

导致国内推送服务五花八门。

基本每个手机厂商都搞了一套自己的推送标准。

想法很美好。

但实际上 App 为了适配这些。

导致一个 App 要接入一大堆推送服务。



图源:雷科技,显示 QQ 接入的多个推送服务

适配麻烦是一方面。

安装包臃肿是另一方面。

况且,还有「死活不从」的。

某些国民级 App 笃定手机厂商不敢杀它后台。


硬是没接入任何一个手机厂商的推送服务。

手机厂商不敢冒着收不到信息的风险。

只好把它拉进白名单。

让它在后台保活。

这么一来。

一台安卓手机至少三五个推送服务呆在后台。

鼓捣半天一样费电,相当于白搞。




在 Google Play 下载的小红书使用「个推」,而非 Pixel 内置的 FCM.

最后工信部看不下去了。

旗下的泰尔实验室决定解决这个问题。
「统一推送联盟」登场



2017 年统一推送联盟登场

它上来就干了三件大事:

1、拉上主流手机厂商和互联网大厂,统一了各推送服务的接口标准。



2、制定《中国绿色 App 公约》,规范 App 不能滥用权限。



3、搭建「推必达」服务,地位之于谷歌的 FCM、苹果的 APNs。



「接口统一」和《公约》做得比较成功。

有媒体采访安卓开发者说。

现在接入推送服务要比以前容易得多。

基本上一次接入就能覆盖所有主流手机厂商。

《公约》也得到了工信部的帮助。

陆续惩处了一些滥用权限的 App:



看上去一切非常美好。

是这样吗?
有多少人接入了?

虽然没有公开数据显示多少 App 接入了厂商的推送服务。

不过大部分主流应用都已经适配了。



一定程度上解决了安卓推送混乱的问题。

见大家都挺听话的。

「统一推送联盟」决定更进一步。

推行国产版本 FCM ——「推必达」。
推必达「欲推但不达」

从技术路线上看。

「推必达」比谷歌的 FCM 和苹果的 APNs 还要先进。

它使用运营商信令级通道接入,由基站负责推送。



哪怕不开数据都能收到。

当时还声称能有 100% 的到达率。



对用户来说确实是好事。

但对手机厂商和 App 开发者来说可不是这样。

毕竟 MiPush、HMS Push 之类的商业模式已经跑通。

谁也不想平白无故把钱让给别人。


相反的,如果应用通知只能和运营商合作推送。

同样也是一种垄断。

另一方面,有开发者称「推必达」的审核条件非常苛刻。

对一些广告推送并不友好。

总之,在种种阻力下。

「推必达」最终不了了之。


「统一推送联盟」也在 2021 年更名为「统一推送工作委员会」。

以维护统一接口和监管 App 滥用权限为主要工作目标。

国产安卓何时才能有匹敌 APNs 的服务呢?

不知道,但不是这次。

总结


收尾。

安卓和 iOS 的消息推送服务哪家强?

从技术路线来看,iOS 必然是更胜一筹。

这也是 iOS 多年封闭和监管铸成的护城河。

但时光飞逝。

安卓这边处理器和电池都追赶起来。

纵使我技术路线不领先,但我可以大力飞砖。

到现在只听到你 iOS 经常收不到消息。

谁还再听到我安卓卡顿和耗电?

所以先进不先进。

重要吗?

Enjoy it.

免费捐助

Hey boys and 乡亲们。我们的工作目前仍未盈利。但服务器和运营开支逐渐增大。如果你最近想捐助我们,可以参照这个方法。免费捐助尝鲜派,还能领个红包:

戳这里也可以:
页: [1]
查看完整版本: 你的 iPhone 收不到微信,可能是 iOS 的优势之处