【问题标题】:How does WhatsApp know if the user gets the push notification even if the app is runnng in the background and is not open?即使应用程序在后台运行且未打开,WhatsApp 如何知道用户是否收到推送通知?
【发布时间】:2012-03-17 13:21:57
【问题描述】:

我已经问过相关问题: any option to know if apple app get the push notification?

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

但我发现了一些有趣的事情: 我用 WhatsApp 带了 2 部 iPhone。我在第一部 iPhone 中打开 WhatsApp 并退出它(WhatsApp 现在在后台),然后使用第二部 iPhone,我将 WhatsApp 消息发送到第一部 iPhone。

当 WhatsApp 的推送通知到达第一部 iPhone 时,我可以在消息附近看到两个“V”(符号)(并且我没有打开推送通知)。在此之后,我关闭了第一部 iPhone 中的 Internet 和 3G,并再次使用第二部 iPhone 向第一部 iPhone 发送 WhatsApp 消息。 - 我只能看到按摩附近的一个“V”(未阅读 - 没有收到推送通知)。

现在,在第一部 iPhone 上重新启用 Internet 并收到推送通知后,我可以看到两个“V”(再次 - 我没有打开推送通知)。

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

【问题讨论】:

  • 我也遇到了同样的问题,如果您有任何解决方案,请告诉我。

标签: iphone objective-c xcode push-notification apple-push-notifications


【解决方案1】:

让我们在 WhatsApp 应用程序关闭的情况下调用 iPhone - 接收方 和您发送消息的另一部 iPhone - 发送方,让我们使用通用术语 应用程序 而不是 WhatsApp

发送者的应用程序无法获知推送通知已到达接收者。这是推送通知的本质。

然而,发送者可以向接收者的应用程序发送另一个消息——不是推送通知,而是专有协议——它(接收者)欢迎以任何它想要的特定于应用程序的方式向发送者确认。

所以,我猜(我不知道 - 反正我不隶属于 WhatsApp)你得到的双 v 图标是应用程序消息到达应用程序时在 receiver - 与推送通知无关。

【讨论】:

  • 但是receiver没有打开,是在后台....app不能在后台执行代码....还是我错了?
  • @user1273189 它是possible to some extent
【解决方案2】:

您的意思只是推送技术的基础知识:

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

顺便说一句:

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

两个 V = 消息从 whatsapp 服务器推送到收件人手机

蓝色V的提示信息已被阅读

【讨论】:

  • 至少在黑莓上(如果我没记错的话,还有安卓手机,单 v 表示已发送给收件人,双 v 表示已读取味精。
  • 再澄清一下,我该怎么做?
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

    像这样:

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

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-23
        相关资源
        最近更新 更多