0

我已经使用通知很长一段时间了,我可以发誓userNotificationCenter(_:didReceive:withCompletionHandler:)过去只有在通过通知打开应用程序时才会处理它。

但是,在查看可操作通知后,我发现了这一点:

当用户选择一个动作时,系统会在后台启动您的应用程序并通知共享UNUserNotificationCenter对象,共享对象会通知其委托。使用您的委托对象的userNotificationCenter(_:didReceive:withCompletionHandler:)方法来识别选定的操作并提供适当的响应。

这是否意味着看似通用的didReceive委托方法现在即使在设备被锁定时也可以工作?

还是必须始终打开应用程序以实际执行任何有意义的操作以响应通知操作(写入本地数据库、发送 HTTPS 请求等)?

4

2 回答 2

0

是的,即使设备被锁定,委托也可以工作。只有当用户选择一个动作时,应用才会被唤醒。另外,我不确定在调用完成块之前您将获得多少时间。

重要的

如果您对操作的响应涉及访问磁盘上的文件,请考虑另一种方法。用户可以在设备锁定时响应操作,这会使使用完整选项加密的文件对您的应用程序不可用。如果发生这种情况,您可能需要暂时保存更改并稍后将它们集成到应用程序的数据结构中。

于 2019-03-09T08:04:12.957 回答
0

从这个委托方法:userNotificationCenter(_:didReceive:withCompletionHandler:)当您的设备被锁定时,通知是有效的,但如果您想执行任何操作。

例如:假设通过通知您想在应用程序中接听任何电话,那么您还必须设置其他内容。您必须在应用程序中设置 PushKit 框架。如图所示:在此处输入图像描述

您还必须为 PushKit 框架创建不同的证书

于 2019-03-09T09:33:07.360 回答