WhatsApp 如何为通过 iOS 中的 Push Notifications 推送的消息实现送达回执?

Posted

技术标签:

【中文标题】WhatsApp 如何为通过 iOS 中的 Push Notifications 推送的消息实现送达回执?【英文标题】:How WhatsApp implements delivery receipts for messages pushed through Push Notifications in iOS? 【发布时间】:2015-02-05 16:10:56 【问题描述】:

当用户 Y 离线时,用户 X(在 android 中有 Whatsapp)尝试向 ios 中的用户 Y(有 Whatsapp)发送消息。用户 Y 收到一条来自用户 X 的消息的推送通知。一旦收到推送通知,用户 X 就能够在他的 WhatsApp 客户端中看到双勾号。 WhatsApp 如何判断推送通知已成功发送到 iOS 客户端?

【问题讨论】:

我的问题完全正确!你搞清楚了吗? 我也在找这个,你找到答案了吗? @pikini。 【参考方案1】:

在发生这种情况时,如果不至少看到 WhatsApp 的协议转储,就真的不可能知道发生了什么,所以随着猖獗的猜测:

我猜 WhatsApp 正在使用 Message Delivery Receipts,它依赖于客户端响应消息,而不是服务器。由于推送通知与中间服务(例如,APNS)对话,中间服务本身不会发送所述接收确认,因此在设备上运行的客户端在收到推送通知后会唤醒,分析消息,并将发送确认发送到对话的发起者。

至少,如果我试图利用现有标准,我会这样做,而这不一定是 WhatsApp 正在做的事情。

【讨论】:

【参考方案2】:

Whatsapp 使用基于 TCP 的 XMPP。因此,如果服务器能够获得到 Y 的连接,这应该确保消息已被传递。 因此,如果 whatsapp 服务器能够将消息发送给 Y,则消息将被推出服务器。如果 Y 已启用扩展以发送消息状态,则 Y 会自动向 X 发送带有扩展“已交付”的响应。

【讨论】:

【参考方案3】:

我真的不知道,但我会说 Whatsapp 会在后台保留一项服务来检测它。如果我是正确的,当您完全关闭应用程序(从多任务)并收到一条消息时,如果您不打开应用程序,其他人将不会看到收到的双勾。

【讨论】:

Whatsapp 无法根据 iOS 多任务在 iOS 后台运行服务。 如果应用程序被杀死并且接收者在android应用程序上得到了推送,WhatsApp会显示双勾号。

以上是关于WhatsApp 如何为通过 iOS 中的 Push Notifications 推送的消息实现送达回执?的主要内容,如果未能解决你的问题,请参考以下文章

iOS:如何为uibezierpath中的填充设置动画?

实现 ios 聊天(如whatsapp):websocket?

mongodb:如何为每个数组元素创建_id?

在 iOS 中实现 - 带有自定义标记器的 Android MultiAutoCompleteTextView,如 Whatsapp [附加图片]

如何为 AFNetworking 创建 .cer 文件以在 iOS 应用程序包中使用

iOS - 如何为头像创建分层图像