【发布时间】:2016-04-18 13:10:03
【问题描述】:
我想清除通知托盘中的本地通知。为此 实施后,我正在考虑使用静默推送通知。所以我想要 确认设备何时收到它以及我可以用它做什么?
【问题讨论】:
标签: ios apple-push-notifications
我想清除通知托盘中的本地通知。为此 实施后,我正在考虑使用静默推送通知。所以我想要 确认设备何时收到它以及我可以用它做什么?
【问题讨论】:
标签: ios apple-push-notifications
它们可用于在不通知用户的情况下通知应用程序新内容。应用程序将在后台唤醒,而不是显示通知警报(如果用户强制退出,iOS 不会自动启动您的应用程序)并且将调用application:didReceiveRemoteNotification:fetchCompletionHandler:。然后,您就有机会为用户透明地处理任何信息:
请注意,您的时间限制为 30 秒。
配置静音通知
要支持静默远程通知,请将远程通知值添加到 Info.plist 文件中的 UIBackgroundModes 数组中。要了解有关此数组的更多信息,请参阅 UIBackgroundModes。
<key>UIBackgroundModes</key>
<array>
<string>remote-notification</string>
</array>
配置静默通知
aps 字典也可以包含 content-available 属性。值为 1 的 content-available 属性让远程通知充当静默通知。当静默通知到达时,iOS 会在后台唤醒您的应用程序,以便您可以从服务器获取新数据或进行后台信息处理。用户不会被告知因静默通知而产生的新信息或更改信息,但他们可以在下次打开您的应用时了解这些信息。
对于静默通知,请注意确保 aps 字典中没有警报、声音或标记负载。如果您不遵循此指导,错误配置的通知可能会受到限制,并且不会在后台传递到应用程序,而是向用户显示而不是静默
【讨论】:
当您发送静默推送通知时,如果应用程序被挂起,则系统会唤醒或启动您的应用程序并在调用该方法之前将其置于后台运行状态,但如果应用程序被用户手动杀死,则不会唤醒.
application:didReceiveRemoteNotification:fetchCompletionHandler:
当您发送静默推送通知并且您的应用有最多 30 秒的挂钟时间来执行下载或任何其他类型的操作并调用指定的完成处理程序块时,将调用此方法。如果没有及时调用处理程序,您的应用将被暂停。
如果您想发送静默推送通知,那么您的通知负载应该是这样的:
{
"aps" = {
"content-available" : 1,
"sound" : ""
};
// You can add custom key-value pair here...
}
【讨论】:
sound : "" 的建议现在已经过时 - 这是解决旧版本 iOS 中的错误的一种方法。
didReceiveNotificationResponse 不用于静默通知。因为没有什么可以回应的。它是沉默的,你永远不会知道它发生了。这仅在用户点击/与通知交互时使用...