什么是无声推送通知?设备什么时候收到?

Suh*_*til 51 apple-push-notifications ios

我想在通知栏中清除我的本地通知.为了实现这一点,我想使用静默推送通知.所以我想确认设备何时收到它以及我可以用它做什么?

小智 86

它们可用于在不通知用户的情况下通知新内容的应用.应用程序将在后台唤醒(如果用户强制退出,iOS不会自动启动您的应用程序),而应用程序:didReceiveRemoteNotification:fetchCompletionHandler:将被调用,而不是显示通知警报 .然后,您有机会以透明方式处理用户的任何信息:

  • 下载一些内容
  • 同步一些元素,
  • 当用户打开它时,直接在应用程序内通知用户

请注意,您的时间限制为30秒.

配置静默通知

要支持静默远程通知,请将remote-notification值添加到Info.plist文件中的UIBackgroundModes数组.要了解有关此数组的更多信息,请参阅UIBackgroundModes.

<key>UIBackgroundModes</key>
<array>
    <string>remote-notification</string>
</array>
Run Code Online (Sandbox Code Playgroud)

配置无提示通知

aps字典还可以包含content-available属性.值为1的content-available属性允许远程通知充当静默通知.当无声通知到达时,iOS会在后台唤醒您的应用程序,以便您可以从服务器获取新数据或进行后台信息处理.用户不会被告知由静默通知产生的新信息或更改信息,但他们可以在下次打开您的应用时找到相关信息.

对于静默通知,请注意确保aps字典中没有警报,声音或徽章有效负载.如果您不遵循此指南,则可能会限制配置不正确的通知,并且不会在后台将其传递给应用程序,而是向用户显示而不是静默

  • 如果它被强行杀死,它会唤醒应用程序吗? (12认同)
  • 用户是否仍需要授予接收这些通知的权限? (2认同)
  • 如果应用程序强制关闭,那么iOS会重新启动它以进行静音推送吗? (2认同)
  • 用户不需要授予静默推送的权限。他们确实必须允许“后台获取”首选项。如果应用程序被用户强行退出,则无提示推送将不会在后台启动该应用程序。 (2认同)
  • 嗨,我做了 poc,如果应用程序也被强制杀死,静默推送通知唤醒它并运行 30 秒 (2认同)

Arp*_*pit 23

当您发送静默推送通知并且应用程序被暂停时,系统会在调用方法之前唤醒或启动您的应用程序并将其置于后台运行状态,但如果应用程序被用户手动终止,则它将不会被唤醒.

应用:didReceiveRemoteNotification:fetchCompletionHandler:

当您发送静默推送通知并且您的应用程序有最多30秒的挂钟时间来执行下载或任何其他类型的操作并调用指定的完成处理程序块时,将调用此方法.如果未及时调用处理程序,您的应用程序将被暂停.

如果要发送静默推送通知,则通知负载应如下所示:

{
    "aps" = {
        "content-available" : 1,
        "sound" : ""
    };
    // You can add custom key-value pair here...
}
Run Code Online (Sandbox Code Playgroud)

  • 我相信现在包含“ sound:“”的建议已过时了-这是解决旧版iOS中的错误的一种方法。 (2认同)
  • @Arpit您的行"如果应用程序暂停或未运行,则系统会唤醒或启动您的应用并将其置于后台运行状态".暂停是可以的,但在没有运行的情况下,我不认为系统唤醒或启动应用程序. (2认同)
  • @Arpit `didReceiveNotificationResponse` 不用于静默通知。因为没有什么可以回应的。它很安静,你永远不会知道它发生了。这仅在用户点击/与通知交互时使用... (2认同)