我正在使用推送通知。我通读了Apple的编程指南,在远程或本地通知的情况下,调用application:didFinishLaunchingWithOptions并将有效负载保存在launchOptions中。在通知的情况下,我可以响应推送。我在两个设备上测试推送。一个发出推送,另一个发送推送。我在两个设备上运行了应用程序,我保持一个打开,第二个退出应用程序到主屏幕并关闭手机等待通知(我没有关闭xcode上的应用程序)。我发出了一个推送,我在接收设备上收到了它,但是使用NSLog,似乎应用程序:在打开推送时没有调用didFinishLaunchWithOptions,并且只在应用程序首次启动时调用一次。我没有提供代码,因为除了正在工作正常的推送之外,没有多少添加测试。可能有什么不对?是应用程序在后台时响应通知的正确方法吗?
答案 0 :(得分:3)
如果您只是通过按主页按钮关闭应用程序,应用程序实际上不会再次启动,因此第二次不会调用application:didFinishLaunchWithOptions
相反,所谓的- (void)applicationWillEnterForeground:(UIApplication *)application
和- (void)applicationDidBecomeActive:(UIApplication *)application
因此我建议在applicationDidBecomeActive
中处理所需的内容,因为在打开应用时会调用该方法&回到前台。
答案 1 :(得分:2)
如果您的应用在推送通知到达时在后台(或在前台)运行,则获取通知有效负载的方法为application:didReceiveRemoteNotification:
。