【问题标题】:How to determine if application is launched to do Background Fetch如何确定应用程序是否启动以进行后台提取
【发布时间】:2013-11-28 08:07:18
【问题描述】:

当操作系统启动应用程序进行后台获取时,我观察到的顺序是这样的

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

然后

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

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

我注意到UIApplication_applicationFlagsisHandlingBackgroundContentFetch 布尔值,对于后台提取设置为true,但它在@package 内部并且无法访问。

【问题讨论】:

  • 您检查过您的设备日志吗?

标签: ios iphone objective-c ios7 xcode5


【解决方案1】:

抱歉,这不是您问题的直接答案,但您能否通过在应用委托中的以下方法之间划分应用启动逻辑来获得相同的结果?

1) 两种场景通用的任何应用启动逻辑都放在此处:

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

2) 正常启动行为在这里:

- (void)applicationDidBecomeActive:(UIApplication *)application

3) 后台获取启动行为在这里(精简版 #2):

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

【讨论】:

  • 我最终做了你建议的事情。
猜你喜欢
  • 2013-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
  • 1970-01-01
相关资源
最近更新 更多