当应用程序不在后台时,如何获取iOS推送通知的传递状态?

当应用程序不在后台时,如何获取iOS推送通知的传递状态?,ios,push-notification,xmpp,apple-push-notifications,Ios,Push Notification,Xmpp,Apple Push Notifications,我已经研究了一段时间了,但是想不出一个方法来做这件事 在WhatsApp和其他一些iOS聊天应用程序中,会发生以下情况 消息接收器强制关闭应用程序(应用程序未在后台运行) 发送者发送消息 接收器接收APNS推送通知 发件人将状态视为“已送达” 有趣的是,当设备关闭时,它仍然可以这样做 假设接收器的设备已关闭。然后发生以下情况 发送者发送消息 发件人将状态视为已发送(发送到服务器) 接收器打开手机(但应用程序未在后台运行) 接收方在设备上获取推送通知(但未打开) 发件人将状态视为“已送达”

我已经研究了一段时间了,但是想不出一个方法来做这件事

在WhatsApp和其他一些iOS聊天应用程序中,会发生以下情况

  • 消息接收器强制关闭应用程序(应用程序未在后台运行)
  • 发送者发送消息
  • 接收器接收APNS推送通知
  • 发件人将状态视为“已送达”
有趣的是,当设备关闭时,它仍然可以这样做

假设接收器的设备已关闭。然后发生以下情况

  • 发送者发送消息
  • 发件人将状态视为已发送(发送到服务器)
  • 接收器打开手机(但应用程序未在后台运行)
  • 接收方在设备上获取推送通知(但未打开)
  • 发件人将状态视为“已送达”
GCM具有交付状态,使用APNS,如果应用程序在后台运行,我们可以找到交付状态


由于APNS没有传递状态反馈服务,即使应用程序未在后台运行,它如何知道另一端何时收到消息?

APNS/GCM消息由特殊系统服务接收,而不是由您使用的应用程序接收。所以,当你打开手机时,这项服务会收到信息,向苹果/谷歌服务器发送新的状态,并向用户显示通知。

是的,但我试图弄清楚像WhatsApp这样的应用程序在收件人收到信息后如何获得信息发送确认(发送回执)。我知道如果应用程序在后台运行,这是可以做到的,但在这种情况下,服务器知道消息何时传递,即使应用程序没有在后台运行。聊天应用程序中的传递回执与推送通知无关,由应用程序在其常规消息通道中推送的传递回执。您找到了任何机制吗?