【问题标题】:How can I tell my app was started as a result of background refresh?我如何知道我的应用程序是由于后台刷新而启动的?
【发布时间】:2014-07-11 16:16:53
【问题描述】:
我的 iOS 应用正在使用后台刷新(通过 application:didReceiveRemoteNotification:fetchCompletionHandler: API),我注意到有时 iOS 会在后台终止应用并稍后重新启动它。
在这种情况下,似乎正在调用 application:didFinishLaunchingWithOptions: 但未调用 applicationDidBecomeActive: 因为应用程序停留在后台。
我面临的挑战是我想知道我的应用程序是否由于我的应用程序中的后台刷新而在后台重新启动:didFinishLaunchingWithOptions: 函数,因为我在那里进行了一些早期处理。这可能吗?
【问题讨论】:
标签:
ios
events
background
refresh
restart
【解决方案1】:
如果它是通过远程通知启动的,请查找传递给-application:didFinishLaunchingWithOptions:的启动密钥
用于访问传递给应用程序的启动选项字典中的值的键:willFinishLaunchingWithOptions: 和 application:didFinishLaunchingWithOptions: 应用程序委托的方法
特别是:
UIApplicationLaunchOptionsRemoteNotificationKey
此键的存在表示应用程序可以处理远程通知。该键的值是一个 NSDictionary,其中包含远程通知的有效负载。有关处理远程通知的更多信息,请参见 application:didReceiveRemoteNotification: 的描述。
如果是通过NSURLSession 进行后台获取,WWDC 2013 的 Session 204 会提供更多信息,但您可以使用 application:handleEventsForBackgroundURLSession:completionHandler: