XCode 11 发布后,Apple 限制了 PushKit 通知。现在它只能用于通知来电。因此,如果应用程序不通过 CallKit 报告来电,它将崩溃。
问题是如何组织推送通知传递到消息传递应用程序,即使它被杀死。
我发现了一些可以使用的点 - 带有指定推送消息内容(content-available=1,apns-priority=5 等)的“静默通知”(不是 PushKit)。应用程序可以处理推送通知,运行一些业务逻辑来准备消息数据并显示 UNNotification 和/或更新应用程序徽章。
但是有很多关于 iOS 限制向用户杀死的应用程序推送通知的帖子和主题 - 操作系统只是不启动应用程序。
还有另一个情节转折 - Telegram iOS 源代码显示完全相同的应用程序逻辑 - PushKit 通知仅对传入呼叫和默认 PushNotifications 对所有其他场景(按来源)。您可以杀死 Telegram 应用程序,但您总是会收到传入的消息通知 - 该应用程序以某种方式已启动并正在处理推送通知(解密、加载媒体和其他)。
它是怎么运行的?