0

我们有一个使用 PushKit 来接收通知的应用程序。(它不是 VoIP 应用程序,但由于是在医疗保健领域有特定需求的特殊应用程序类别,我们从 Apple 获得了使用 PushKit 的特许权)。

当应用程序未运行且 PushKit 通知进来时,系统将应用程序启动到后台并调用推送工具包委托负载处理器 (PKPushRegistryDelegate pushRegistry:didReceiveIncomingPushWithPayload:forType:)。然后应用程序再次关闭。该应用程序永远不会达到图形交互状态。

这很好,应该如何。但是,iOS 会启动完整的应用程序,加载故事板和所有内容。此外,在 UIApplicationDelegate application:willFinishLaunchingWithOptions: 中,启动选项为 nil,因此您不知道您正在启动以处理推送套件并且不会进行交互。

这给我们带来了问题,因为我们的应用程序对资源、服务器连接等进行了完整的“大量”设置,这些资源、服务器连接等不需要也不应该设置为仅处理 PushKit 通知。这给我们带来了一些问题,因为某些正在连接的东西(服务器连接等)会导致一些我们在处理 PushKit 时不想要的行为(然后应用程序消失)。

有没有办法知道您是出于 pushkit 目的而启动的,而不是进行通常发生的所有应用程序设置?(如果应用程序随后转换为 Active,我们应该能够使用正常的活动状态转换来完成设置)

4

1 回答 1

0

在 didReceiveIncomingPushWithPayload 中获取 Pushkit 负载后,您必须使用基于 pushkit 负载的信息来安排本地通知。然后您可以使您的应用程序具有交互性。您还可以在 NSUserDefault 中保留详细信息并检查本地通知点击事件和 didFinishLaunchingWithOption。

通过这种方式,您可以启动故事板并重定向到特定的视图控制器。

如果您需要更多说明,请告诉我。

于 2017-01-19T07:05:54.687 回答