NSURLSession:handleEventsForBackgroundURLSession方法不在后台会话中运行

时间:2016-03-17 20:35:11

标签: ios objective-c background nsurlsession

上传在后台完成时,

application:handleEventsForBackgroundURLSession:completionHandler:不会运行。当所有上传/下载任务在后台完成时,iOS应该唤醒应用程序并调用上述方法。但事实并非如此。

  1. 我已经通过从'xcode stop'按钮终止应用程序并从异常终止来测试了这一点。
  2. 我已关注Background Transfer consideration
  3. 我在Apple developer guide: Background example上对此进行了测试,但它无效。
  4. 我还在AppCoda: Background example上对此进行了测试,但它无效
  5. 在2点和3点中给出的两个示例都不适用于iOS 9.0和xCode 7.0。在升级到iOS9.0之前,我已经在iOS7.0和xcode 5.0上测试了它,它运行得非常好。
  6. 我假设它可以在真实设备上运行。
  7. 我在这里缺少什么?任何人都可以确认handleEventsForBackgroundURLSession是否可以在iOS9.0模拟器中运行,或者我做错了什么?因为它不适用于2和3中给出的示例,所以我想也许我测试错了。

2 个答案:

答案 0 :(得分:0)

@ZayinKrige在评论中回答了这个问题:

  

后台下载事件不会在模拟器上触发。您只能在真实设备上进行测试

还有一点扩展,这是测试后台会话代码的指南: https://forums.developer.apple.com/message/42353#42353

答案 1 :(得分:0)

就我而言,这是因为我使用了 uploadTask(withStreamedRequest:...),它与后台 URL 会话不兼容。我改用 uploadTask(with:request, fromFile:...),一切都开始工作了。