未连接到 xcode 调试模式时,iOS7 后台获取 performFetchWithCompletionHandler 在设备上不起作用
Posted
技术标签:
【中文标题】未连接到 xcode 调试模式时,iOS7 后台获取 performFetchWithCompletionHandler 在设备上不起作用【英文标题】:iOS7 background fetch performFetchWithCompletionHandler does not work on device when not connected to xcode debug mode 【发布时间】:2014-08-20 19:57:10 【问题描述】:我为后台获取实现了 performFetchWithCompletionHandler。当数据发生变化时,我设置了本地通知以触发。出于测试目的,即使数据没有变化,我也会触发通知,以便我知道事情确实在工作,而且我不必等待远程数据发生变化来测试我的应用程序)。
当应用程序在 xcode 中处于调试模式时,我使用“模拟后台提取”选项,后台提取按预期工作。通知会按预期显示在模拟器上。
删除了手机上的旧应用。我将 ip5 设备连接到 xcode 并运行应用程序。应用程序在 iPhone 上更新。在调试模式下,我执行“模拟后台获取”选项。我按预期看到了本地通知。
现在我已经断开了设备的连接,并且每小时都打开和关闭应用程序(amlost!),但是后台提取甚至没有触发一次,而且我还没有看到任何本地通知。
我已经设置了代码来做到这一点:
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
[[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
return YES;
我做错了什么?
【问题讨论】:
【参考方案1】:在 Xcode 5 调试模式下,您可以从菜单强制执行后台提取:调试 > 模拟后台提取。
请检查此链接 performFetchWithCompletionHandler never gets fired
【讨论】:
【参考方案2】:希望不是这样:
您正在执行哪种类型的后台提取?获取可能会在调试器中工作一次而不是再次 - 然后当您运行实际的 IPA 时,例如,因为您正在执行 dataTaskWithRequest 或类似的事情 - 它不会工作。
【讨论】:
以上是关于未连接到 xcode 调试模式时,iOS7 后台获取 performFetchWithCompletionHandler 在设备上不起作用的主要内容,如果未能解决你的问题,请参考以下文章
当应用程序未连接到 xcode 时,iOS 8 静默推送通知不会触发 didReceiveRemoteNotification 方法