AFNetworking GET在后台应用程序时无法完成

时间:2014-03-12 20:01:24

标签: ios ios7 afnetworking

我正在努力实现这一目标:

1)我的应用程序收到静音推送通知,通知它有通过后台传输服务下载的新数据,即content-available = 1

2)应用程序在后台启动,然后运行GET命令到我的服务器以确定要下载的新文件的URL

3)应用程序通过后台传输服务

下载此文件

当应用程序运行时,我的工作正常。它需要两个AFHTTPSessionManager对象。步骤#2需要在默认NSURLSessionConfiguration中初始化的步骤,因为GET函数使用数据任务,在后台NSURLSessionConfiguration中不支持该数据任务(请参阅限制here)。步骤#3需要一个处于后台的NSURLSessionConfiguration。

但是,当我通过运行推送通知在调试器中启动应用程序时,GET调用从不调用成功或失败块。我打算调试 - >附加到Process,然后输入我的进程名称。然后Xcode从“等待发布”开始#39;声明并附属于流程'我发送推送通知时的状态。我可以使用断点来查看AFHTTPSessionManager是否正确创建,并且正在调用GET:parameters:success:failure函数。但是,成功/失败块中的断点永远不会被调用。

我可以在应用处于后台状态时运行非后台配置的会话管理器吗?如果没有,我如何在处于后台状态时从我的服务器获取下载信息?

1 个答案:

答案 0 :(得分:1)

问题是应用程序在GET响应可能从服务器返回之前进入暂停状态,并且可以调用成功/失败块。

我必须遵循"在背景中执行有限长度任务"下的过程here。基本上,我需要在进行GET调用之前在应用程序上调用beginBackgroundTaskWithExpirationHandler:以便操作系统知道不会立即暂停我的应用程序。

其他一切只是一堆乱糟糟的鲱鱼!