我们有一个使用PushKit接收通知的应用。 (它不是一个VoIP应用程序,但我们有一个苹果公司使用PushKit的特权,因为它是一个特殊的应用程序类别,在医疗保健方面有特定需求)。
当应用程序未运行且PushKit通知进入时,系统会将应用程序启动到后台并调用推送工具包委托有效负载处理器(PKPushRegistryDelegate pushRegistry:didReceiveIncomingPushWithPayload:forType :)。然后应用程序再次关闭。该应用程序永远不会达到图形交互状态。
这很好,应该如何。但是,iOS会完成一个完整的应用程序启动,加载故事板和所有内容。此外,在UIApplicationDelegate应用程序:willFinishLaunchingWithOptions:中,启动选项为nil,因此您不知道您是否正在启动以处理推送工具包而且不会进行交互。
这导致我们出现问题,因为我们的应用程序执行完整的,“繁重”的资源,服务器连接等设置,这些设置不需要也不应该设置为仅处理PushKit通知。这导致了一些问题,因为某些事情被连接(服务器连接等)导致我们在处理PushKit时不想要的某些行为(然后应用程序消失)。
有没有办法知道你是为推送套件而推出的,而不是通常会发生的所有应用设置? (如果应用程序然后转换为Active,我们应该能够使用正常的活动状态转换来完成设置)
答案 0 :(得分:0)
在didReceiveIncomingPushWithPayload中获取Pushkit有效负载后,您必须使用基于pushkit有效负载的信息来安排本地通知。那么你可以让你的应用程序互动。您还可以在NSUserDefault中保留详细信息并检查本地通知点击事件和didFinishLaunchingWithOption。
通过这种方式,您可以启动故事板并重定向到特定的viewControllers。
如果您需要进一步澄清,请告诉我。