如何确定是否启动应用程序以执行后台提取

时间:2013-11-28 08:07:18

标签: ios iphone objective-c ios7 xcode5

当OS启动应用程序进行后台获取时,我观察到的序列是

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

然后

-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

didFinishLaunching我试图确定是否启动应用程序来执行后台提取,因为我需要禁用某些功能来加速应用程序加载。 UIApplication不公开任何属性来确定这一点。

我注意到UIApplication的{​​{1}}有_applicationFlags布尔值,背景提取设置为true但是@package内部无法访问。

1 个答案:

答案 0 :(得分:9)

很抱歉,这不是您问题的直接答案,但是您可以通过在应用代表中将以下方法之间的应用启动逻辑划分来实现相同的结果吗?

1)两个场景共有的任何应用启动逻辑都在这里:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

2)正常的发布行为在这里:

- (void)applicationDidBecomeActive:(UIApplication *)application

3)后台获取启动行为在这里(#2中的缩小版本):

-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler