WhatsApp在其最新更新中实施了端到端加密(白皮书)。

WhatsApp如何将带有消息内容的推送通知发送到Apple Push Notification服务?

一种可能的解决方案是从应用程序内部将未加密的消息发送到APN,但这很容易被滥用,并且会破坏端到端加密的目的。

更新:
根据Apple的文档,我刚刚对其进行了更多测试:


但是,如果用户强制退出应用程序,系统不会自动启动您的应用程序。在这种情况下,用户必须重新启动您的应用程序或重新启动设备,然后系统才会尝试再次自动启动您的应用程序。


我进行了测试,导致我仍然收到纯文本推送通知。这会让我相信该应用程序未在后台运行,无法解密收到的任何通知,然后将其重新发布。

2017年5月更新: VoIP API(如下面的答案中所述)可以在演示应用程序中有效地实现相同的结果。效果很好。

2017年7月更新:

Apple不再允许将API用于非VOIP应用的推送通知。但是,它们确实允许WhatsApp无限公平地做到这一点。

2018年9月更新:

通知应用程序扩展现在可以用于解密推送通知。但是,不鼓励在此类扩展中使用动态库,因此您必须具有可静态编译以进行解密等的代码库。

#1 楼

WhatsApp可能将VOIP后台模式与PushKit一起使用来解决此问题。
考虑了高优先级的通知,并及时发送。
即使应用程序被用户强行退出也可以提供。

有关详细信息,请参阅IP语音(VoIP)最佳做法。 VOIP推送被解密,并在解密的消息中显示“本地通知”。那么,Whatsapp在iOS的早期版本中是如何做到的呢?
事实并非如此。它们不允许您在iOS 8之前的版本的通知中查看消息预览(在iOS 7上进行了验证,请参见屏幕截图)



评论


只是要清楚一点,这仍然是推测,对吗?这是一个很好的解释,不同版本之间的区别是一个很好的旁证,但听起来我们还是不确定。

–octern
16-4-6在19:28

@octern我计划在越狱的iPhone上使用LLDB附加到whatsapp

– Antwan van Houdt
16年4月6日在23:24

这是很合理的。但是,为什么Threema仍然声称存在技术限制?还是他们只是缓慢/懒惰地更新软件?

–mrclschstr
16-4-7在10:50



我只是想知道为什么他们不显示您给联系人的姓名,而不显示发件人的用户名。在此功能之前,它是公平的,但现在完全有可能显示联系人。

–奇闻趣事
16年5月8日,0:10

在iOS10中,WhatsApp可能正在使用Notification Service Extensions,使用此扩展应用程序可以在后台接收有效负载,对其进行修改/解密,然后将其显示给用户。

– D4ttatraya
17年1月9日在13:41

#2 楼

您所称的Push Notifications(在通知中心看到的)和Remote Notifications(通过APN发送的信息)并不完全相同。

在Android上,两者完全不同。第一个称为Notification,第二个称为Message或Downstream Message

但是回到iOS,该应用程序可以生成本地通知,该通知将显示在您的通知中心中。这些不需要由任何远程通知触发,这取决于应用程序中的逻辑,iOS应用程序确实可以执行后台任务并进行同步以生成这些通知。
由于iOS7, iOS应用程序还可以在后台无限期地执行HTTP操作(因为该应用程序将网络传输委派给系统,因此在传输完成后将在有限的时间内唤醒应用程序)。另一方面,

远程通知最初是为向用户直接发送APN推送而设计的。但是苹果公​​司意识到开发人员需要向其应用程序而不是通知中心发送推送通知,并向远程通知添加了一个静默标志,以便服务器可以发送通知以唤醒应用程序而不会打扰用户。然后,应用程序将执行一些同步和逻辑,并自行决定是否创建本地通知(将在通知中心显示)。
此外,直到最近,远程通知的有效载荷都受到256个字节的限制,这迫使许多开发人员可以将这些通知用作“推送同步”消息,而不是数据通道。

如果您对我的理解很好,那么您将了解Whatsapp不需要使用APN在“远程通知”中发送消息有效负载。

评论


我喜欢这个答案。如果您设法添加一些参考文献,我将表示赞同。

– GnP
16年4月13日在21:37

@gnp在这里,你去。

– Thibault D.
16年4月14日在8:21

苹果公司有关静默通知的文档位于:developer.apple.com/documentation/usernotifications/…-它具有以下注释:“系统将静默通知视为低优先级。您可以使用它们来刷新应用程序的内容,但是系统不能保证其交付速度……...每小时不要尝试发送两个或三个以上的静默通知。“我不认为这将是Whatsapp使用的途径

– Orion Edwards
18-09-6在2:43