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

时间:2016-04-18 13:10:03

标签: ios apple-push-notifications

我想清除通知栏中的本地通知。为此 已实现,我正在考虑使用静默推送通知。所以我想要 确认设备何时收到它以及我可以用它做什么?

2 个答案:

答案 0 :(得分:79)

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

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

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

配置静默通知

  

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

<key>UIBackgroundModes</key>
<array>
    <string>remote-notification</string>
</array>
  

配置无声通知

     

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

     

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

答案 1 :(得分:22)

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

应用程序:didReceiveRemoteNotification:fetchCompletionHandler:

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

如果您要发送无声推送通知,那么您的通知有效负载应如下所示:

{
    "aps" = {
        "content-available" : 1,
        "sound" : ""
    };
    // You can add custom key-value pair here...
}