【问题标题】:AFNetworking GET does not finish while app in background应用程序在后台时 AFNetworking GET 未完成
【发布时间】:2014-03-12 20:01:23
【问题描述】:

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

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

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

3) 应用通过后台传输服务下载此文件

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

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

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

【问题讨论】:

    标签: ios ios7 afnetworking


    【解决方案1】:

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

    我必须遵循“在后台执行有限长度任务”下的流程here。本质上,我需要在进行 GET 调用之前在应用程序上调用 beginBackgroundTaskWithExpirationHandler: 以便操作系统知道不会立即挂起我的应用程序。

    其他一切都只是一团糟!

    【讨论】:

    • Executing a Finite-Length Task in the Background' continue working even if background app refresh`是否被用户关闭了?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多