我们有一个使用 PushKit 来接收通知的应用程序。(它不是 VoIP 应用程序,但由于是在医疗保健领域有特定需求的特殊应用程序类别,我们从 Apple 获得了使用 PushKit 的特许权)。
当应用程序未运行且 PushKit 通知进来时,系统将应用程序启动到后台并调用推送工具包委托负载处理器 (PKPushRegistryDelegate pushRegistry:didReceiveIncomingPushWithPayload:forType:)。然后应用程序再次关闭。该应用程序永远不会达到图形交互状态。
这很好,应该如何。但是,iOS 会启动完整的应用程序,加载故事板和所有内容。此外,在 UIApplicationDelegate application:willFinishLaunchingWithOptions: 中,启动选项为 nil,因此您不知道您正在启动以处理推送套件并且不会进行交互。
这给我们带来了问题,因为我们的应用程序对资源、服务器连接等进行了完整的“大量”设置,这些资源、服务器连接等不需要也不应该设置为仅处理 PushKit 通知。这给我们带来了一些问题,因为某些正在连接的东西(服务器连接等)会导致一些我们在处理 PushKit 时不想要的行为(然后应用程序消失)。
有没有办法知道您是出于 pushkit 目的而启动的,而不是进行通常发生的所有应用程序设置?(如果应用程序随后转换为 Active,我们应该能够使用正常的活动状态转换来完成设置)