未连接到 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 方法

查尔斯调试代理未连接到本地主机

Flash 客户端 XMLSocket 未连接到服务器

Visual Studio 代码调试器未连接到 SAM Local

NSURLSession 后台下载不起作用

我的 iOS 应用程序在调试时默认为法语,尽管它被配置为英语