从通知中心删除远程通知

时间:2014-06-15 15:24:45

标签: ios apple-push-notifications

如果您在其他地方查看通知,某些应用程序(特别是StackExchange应用程序和Facebook)可以从通知中心/锁定屏幕中删除通知。例如,如果我从堆栈交换中获取收件箱通知,然后在我的笔记本电脑上查看我的收件箱,通知几乎立即从我的手机中消失。最初我认为这只是苹果可以用Mail和Facebook做的事情。

StackExchange如何向手机发送通知以删除现有通知?

3 个答案:

答案 0 :(得分:3)

我认为他们所做的就是发送一个徽章编号为' 0'从通知中心清除所有现有的。我在Gmail应用上发现了相同的行为,所以我做了一些关于它的小型研究:

  • 当我发送一封电子邮件时,我会在手机上收到推送通知。然后我从笔记本电脑的浏览器打开该电子邮件,并立即通知中心。

  • 当我发送两封电子邮件时,我会收到两个推送通知。然后,当我在笔记本电脑上打开第一个时,两个通知仍然保留在我的iPhone上。打开第二封电子邮件(仍在我的笔记本电脑上)后,通知中心将被清除。

我对Wireshark做了一些额外的检查,我认为每次在笔记本电脑上打开电子邮件时,Google都会向我的手机发送推送通知(即使我的收件箱中仍有未读消息)。

在上述所有情况下,gmail应用程序正在运行(但我不确定iOS 7上引入的后台提取是否会使事情变得复杂)。

我希望有所帮助!

答案 1 :(得分:1)

根据@Irene的答案,我对此类似gmail的建议是:

一旦在桌面或Web上发生某种情况,即您阅读邮件。 Google服务器始终会计算特定用户的badget / notification_number。这很简单:       - 如果是新邮件,或标记为未读邮件,请增加邮件       - 如果读取,标记为已读,存档或类似的东西,则减少。 (谷歌只担心收件箱中的邮件。)

因此,每次此数字更改时,它会为所有会话发送推送通知,更新错误。

在iOS情况下,无论何时发送badget = 0,它都会清除所有通知。所以,在大多数情况下,如果你有条理,你会收到一个通知(只有一个),如果你在其他任何地方阅读它,它将从你的iOS中解雇,因为你将收到badget = 1,然后badget = 0.

但正如艾琳所说,如果你有多封未读邮件。它只会降低你应用中的badget数量。因此,当您正在阅读邮件时,gmail应用程序图标将从10,9,8,7减少。但同样的规则适用。如果你得到badget = 0,它将删除所有本地通知。

我的假设是这样做。

希望这有帮助,

答案 2 :(得分:0)

使用推送通知,我们可以发送notification expiry(至少在PHP language)参数中支持这些参数,可能是在其他设备上读取电子邮件时更新的内容。

// Set the expiry value to 86400 seconds - 1440 minutes
$message->setExpiry(86400); // This message will expire in N seconds

Viber application相同,它支持桌面应用和iOS应用,如果您收到任何新消息,它会向您发送通知,当您在计算机中阅读时,它也会移除推送到移动设备。根据我的知识,这应该是expire参数。

如果我错了,请纠正我。