问题 即使应用程序在后台运行且未打开,WhatsApp如何知道用户是否获得了推送通知?


我已经问了相关的问题: 任何知道苹果应用程序是否获得推送通知的选项?

我得到了一个答案,当应用程序在后台并且用户没有打开时,无法知道推送通知是否到达iPhone ...

但我发现了一些有趣的东西 我用WhatsApp带2部iPhone。我打开,在第一部iPhone,WhatsApp并退出它(WhatsApp现在在后台),然后在第二部iPhone,我发送WhatsApp按摩到第一部iPhone。

当WhatsApp的推送通知到达第一个iPhone时,我可以在消息附近看到两个“V”(符号)(我不打开推送通知)。在此之后,我在第一部iPhone中关闭了互联网和3G,并再次将第二部iPhone的WhatsApp消息发送到第一部iPhone。 - 我可以看到按摩附近只有一个“V”(不读 - 不通过推送通知)。

现在,在第一部iPhone重新启用互联网后,我收到推送通知后,我可以看到两个“V”(再次 - 我不打开推送通知)。

它是如何工作的?当WhatsApp在后台运行时,WhatsApp如何知道iPhone是否收到推送通知?


1751
2018-03-17 13:21


起源

我遇到同样的问题,如果你有任何解决方案,请告诉我。 - Sonu


答案:


让我们在关闭WhatsApp应用程序的情况下致电iPhone 收件人 和你发送消息的其他iPhone - 发件人,让我们使用通用术语 应用 代替 WhatsApp的

申请时 发件人 无法获知推送通知已达到 收件人。这是推送通知的本质。

然而, 发件人 可以向应用程序发送另一个 - 不是推送通知,而是专有协议 - 消息 收件人 它((收件人)欢迎致谢 发件人 以任何特定于应用程序的方式。

所以,我猜(我不知道 - 我与WhatsApp无关),你得到的双v图标是当应用程序消息到达应用程序时 接收器  - 与推送通知无关。


6
2018-03-17 13:32



但接收器没有打开,它在后台....应用程序无法在后台执行代码....或者我错了? - user1273189
它是@ user1273189 可能在某种程度上 - Krizz


你的意思是推技术的基础知识:

whatsapp软件在后台运行,侦听特定端口 传入消息。它不断地这样做。

BTW:

一个V =从您的手机发送到whatsapp服务器的消息

两个V =从whatsapp服务器推送到收件人移动设备的消息

蓝色V表示已读取消息


2
2017-08-10 12:42



至少在黑莓上(如果我没记错的话,还是正确的电话,单个v表示传送给收件人,而双v表示已经读取了msg)。
更进一步澄清,我该怎么做? - Yosra Nagati


Whatsapp不会显示该人是否阅读该消息。它只是通知消息何时被发送到whatsapp服务器(一个V)以及何时发送到个人电话(2个V)。双重并不意味着消息被读取它只是意味着whatsapp连接到手机并且能够传递消息。


1
2018-05-23 00:58





收到推送通知后,接收方可以从推送通知的有效负载中包含的URL下载数据。通过请求该URL,服务器知道接收方已收到推送通知,并且可以将此状态传递给您的发送方应用程序。

像这样:

  1. 在推送通知有效内容中添加特定URL
  2. 实施 application:didReceiveRemoteNotification:fetchCompletionHandler: method 在您的应用程序委托和该方法中调用有效负载中的URL。
  3. 在服务器上实现一个逻辑,该逻辑将URL调用识别为已接收的通知
  4. 让您的发件人应用程序不断从服务器获取当前通知状态。

1
2018-04-06 10:14





以上海报都是正确的。只是添加一件事。如果Whatsapp最近关闭,它仍然在后台运行,仍然可以收到消息(因此返回收据)。但是,在应用程序暂时闲置(或其他应用程序具有更高优先级)后,Whatsapp将被终止,然后它将不再接收传入消息并且不会返回收据。

当然,观察者会注意到打开应用程序和显示的新消息之间存在小的延迟,这似乎表明消息不是在后台下载,而是仅在打开应用程序时下载。那么为什么它在后台运行时返回收据呢?


0
2018-06-23 08:36