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

我想清除通知托盘中的本地通知。 为了实现这一点,我正在考虑使用静默推送通知。 所以我想确认什么时候该设备收到它,我可以用它做什么?

他们可以用来通知应用程序的新内容,而无需通知用户。 应用程序将不会显示通知警报,而是在后台和应用程序中被唤醒:didReceiveRemoteNotification:fetchCompletionHandler:将被调用。 然后,您有机会透明地为用户处理任何信息:

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

请注意,你的时间被限制在30秒。

configuration无提示通知

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

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

configuration无声通知

aps字典也可以包含内容可用的属性。 具有值为1的内容可用属性可让远程通知用作无声通知。 无声通知到达时,iOS会在后台唤醒您的应用程序,以便您可以从服务器获取新数据或进行后台信息处理。 用户不会被告知由静默通知产生的新信息或更改的信息,但是他们可以在下次打开您的应用程序时了解这些信息。

对于无声通知,请注意确保aps字典中没有警报,声音或徽章有效负载。 如果您不遵循此指导原则,则可能会限制configuration不正确的通知,而不会在后台将其传递到应用程序,而不会向用户显示

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

应用:didReceiveRemoteNotification:fetchCompletionHandler:

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

如果你想发送一个静默推送通知,那么你的通知负载应该是这样的:

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