我可以使用PushKit定期推出使用VoIP吗?如果用户不对通知采取行动,是否允许在后台启动被杀应用程序?

SDT*_*DMT 16 push-notification apple-push-notifications ios appdelegate ios8

在PushKit中提到我们可以使用常规推送或VoIP推送.但我没有找到任何PKPushType用于常规推送的文档.有没有人尝试使用PushKit定期推送?如果我不使用VoIP,如果收到推送通知,可以在后台启动被杀应用程序吗?这意味着如果应用程序被杀死并且通知出现并且用户没有对其采取行动,那么如果我使用PushKit,iOS可以在后台启动应用吗?

Ale*_*r W 8

从 iOS 13.0 开始,这不再被允许。如果在didReceiveIncomingPush(withPayload:)完成之前未能呈现 CallKit,Apple 将终止该应用程序。

一位 Apple 员工在此线程中回答了类似的问题,并表示如下:

在 iOS 13.0 及更高版本上,必须使用 CallKit 框架在接收到 IP 语音来电时和在 didReceiceIncomingPush() 方法完成执行之前报告,否则系统将终止您的应用程序。

多次未能报告来电可能会阻止您的应用收到更多来电通知。

基本上,您不能再将 VoIP 推送用于非 VoIP 消息传递,而需要为那些使用常规推送通知。

这是在 WWDC 会议“应用后台执行的进展”期间宣布的https://developer.apple.com/videos/play/wwdc2019/707/

所以很遗憾没有了。对于“标准”推送消息,我们将不得不使用正常的 UINotification 框架。


27 *_*ril 2

我不确定你在 PushKit 中使用“定期推送”是什么意思,但你可以使用它定期发送通知,尽管我认为它总是会执行你的代码,就像无声远程通知一样(也许这就是你想知道的) )。

如果您使用 PushKit,它确实会在收到通知时启动应用程序,即使它被用户强行终止。看到这个答案。我只想补充一点,您可能需要 IP 语音功能才能实现该效果。