NSURLErrorDomain Code=-997 "Lost connection to background transfer service" 网络连接丢失,无法进行后台传输服务。

16
我正在使用NSURLSession下载一些mp3文件并将它们存储在设备中。一切都很顺利,但有时,应用程序会突然崩溃,我会收到这个奇怪的错误,提示“NSURLErrorDomain Code=-997” “与后台传输服务的连接丢失”。这种情况并不经常发生,但是当发生时,它会破坏整个应用程序,比如下次启动应用程序时,所有的下载任务都会出问题,我只能重新在设备上构建应用程序才能让它正常工作。
请注意,自从使用Xcode 6和iOS8后,我才遇到了这个错误,尽管我不确定它是否与iOS8有关。
Error Domain=NSURLErrorDomain Code=-997 "Lost connection to background transfer service" UserInfo=0x178664100 {NSErrorFailingURLKey=http://XXXXXXXXXX.mp3, NSLocalizedDescription=Lost connection to background transfer service, NSErrorFailingURLStringKey=http://XXXXXXXXXXX.mp3}

1
你找到解决方案了吗?我也有同样的问题。 - zaitsman
@zaitsman 我的问题与文件保存的URL有关。自从解决了这个问题后,我不再遇到这个错误了! - Rashid
@jim 你在实现委托方法 URLSession:downloadTask:didFinishDownloadingToURL: 中是否更改了文件保存的 URL?我遇到了相同的错误,正在尝试确定需要在哪里进行更改。 - Mike Welsh
你是在主线程上执行这个操作吗? - Eddwin Paz
@jim 我建议你阅读以下教程,它将为你解释更多关于你的问题发生了什么。http://code.tutsplus.com/tutorials/ios-7-sdk-background-transfer-service--mobile-20595 - Eddwin Paz
@jim,你能找到解决方案吗? - Syed Ismail Ahamed
4个回答

8
我的错误在于我使用了dataTaskWithRequest而不是uploadtaskWithRequest或者在你的情况下是downloadtaskWithRequest。显然,一个datatask不能在后台运行并且会被终止。

1
如果您想进行没有文件关联的后台上传,例如仅有一些JSON数据,该怎么办呢?您必须先将其保存到文件中吗? - shim
是的,我通过将请求体保存到文件中解决了它。 - shim
@shim,当我上传一个包含请求主体内容的文件时,我遇到了错误。你能给我分享一些相关的代码吗? - gstream
抱歉,我不再拥有那段代码的访问权限了。无论如何,我想任何这样的错误都取决于您使用的服务器。 - shim

1
也许是后台传输守护进程崩溃了。尝试在您的设备上检查崩溃日志。您可能会发现一些有趣的东西。

1

自从我下载了 Xcode 6 并开始使用 iOS 8 以来,我就没有遇到过后台下载的问题!你可能说得对。 - Rashid
我不认为这一定是同一个bug。我正在使用SDK 8.1,在iOS 8.1.3上运行,偶尔也会出现失去连接的错误。有趣的是,我在成功下载数据后立即遇到了这个问题!也就是说,首先回调URLSession:downloadTask:didFinishDownloadingToURL:与响应数据和一切正常,然后立即调用回调URLSession:task:didCompleteWithError:与“失去连接”错误。我将在radar中报告它。 - Oscar Hierro

0

我遇到了AVAssetDownloadTask的问题,后来发现是因为我创建了任务但没有启动它们。


请您详细说明一下,我也遇到了同样的问题。 - varun anand dudeja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接