当我在 FB Desktop 上看到消息时,FB messenger 如何从 iOS 应用程序中删除推送通知?

Posted

技术标签:

【中文标题】当我在 FB Desktop 上看到消息时,FB messenger 如何从 iOS 应用程序中删除推送通知?【英文标题】:How does FB messenger removes push notification from iOS app when I see the message on FB Desktop? 【发布时间】:2015-02-17 15:07:45 【问题描述】:

每当我在 iPhone 上收到来自 Facebook 的消息通知并从 Facebook 网站回复该消息时,该推送通知就会从我的 iPhone 主屏幕上消失。 Facebook 是如何做到这一点的?我知道推送通知在 ios 中没有发送确认机制。在这种情况下,Facebook 知道我已经阅读了该消息,所以他们是否将某些内容推送到他们的应用程序以删除通知?即使他们正在向他们的应用程序发送一条消息,我已阅读此消息,当我没有为 FB Messenger 或 FB iOS 应用程序启用后台应用程序刷新时,应用程序如何删除该通知。

【问题讨论】:

我猜该通知实际上是您作为开发人员可以删除的本地通知。他们使用后台获取推送通知来获取应用程序中的数据,然后在完成后显示本地通知。 但是我没有为这些应用启用后台应用刷新。 这只是一个猜测。 是的。这件事一直困扰着我,而且我对这个级别的 iOS 开发并不熟悉,所以我想我会打开 dias 让其他人说话:) 【参考方案1】:

您要做的是在发送要删除的通知后,发送带有 message="" 和 badge=0 的通知。我刚刚在 node js 应用程序中对此进行了测试,它删除了之前的通知,就像你说的那样。

【讨论】:

【参考方案2】:

经过如下测试,SnoApps 的答案是正确的。我在下面描述的测试假设 iPhone 上的帐户是 A。

测试 1: - 将消息 1 从 B 发送到 A => iPhone 上显示的通知 - 桌面上的阅读消息 1 => iPhone 上的通知消失了

测试 2: - 将消息 1 从 B 发送到 A => iPhone 上显示的通知 - 从 C 向 A 发送消息 2 => 显示另一个通知 - 在桌面上读取消息 1 => 两个通知仍然存在 - A 在桌面上读取消息 2 => 两个通知都消失了

我测试了 WhatsApp 和微信,它们都使用类似的方法来执行此操作,即当服务器未读消息计数变为 0 时,向 iPhone 发送一个空正文和标记为 0 的静默通知。 iOS 会为你清除横幅。

【讨论】:

以上是关于当我在 FB Desktop 上看到消息时,FB messenger 如何从 iOS 应用程序中删除推送通知?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过在 fb 上发布消息来实现调度事件

FB2.1 中的错误消息不正确

在 FB 上分享我的链接网站时没有显示图像

像 FB 封面照片一样在 UIImageView 上调整图像

FB 认为我在注册一项成就时会授予成就

在新的 FB API 上为非应用用户访问好友列表