2014-03-12 21 views
0

我试图做到这一点:AFNetworking GET没有完成,而应用程序在后台

1)无声推送通知是由我的应用程序,通知它有新的数据通过后台传输服务,即下载获得内容可用= 1

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

3)该应用程序下载通过背景文件转让服务

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

但是,当我通过运行推送通知在调试器中启动应用程序时,GET调用从不调用成功或失败块。我要去调试 - >附加到进程,然后输入我的进程名称。然后,当我发送推送通知时,Xcode从“等待启动”状态变为“附加到过程”状态。我可以使用断点来查看AFHTTPSessionManager是否正确创建,并调用GET:参数:success:failure函数。但是,成功/失败块中的断点永远不会被调用。

我能够在应用程序处于后台状态时运行非后台配置的会话管理器吗?如果不是,我应该如何在后台状态下从我的服务器获取下载信息?

回答

1

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

我不得不按照“在后台执行有限长度任务”下的过程here。实质上,我需要在进行GET调用之前调用beginBackgroundTaskWithExpirationHandler:在应用程序中,以便操作系统知道不要立即挂起我的应用程序。

其他一切都只是一大堆红鲱鱼!

+0

即使用户关闭了“后台应用程序刷新”,“在后台执行有限长度任务”仍继续工作吗? –

相关问题