gpt4 book ai didi

ios - 当应用程序以 NSURLSession 终止时,NSURLDomainErrorDomain 错误 -999

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:12 24 4
gpt4 key购买 nike

当我终止应用程序时,我在使用 NSURLSession 时遇到了很大的麻烦。我已经下载了苹果示例: https://developer.apple.com/library/ios/samplecode/SimpleBackgroundTransfer/Introduction/Intro.html

关于 Apple 引用。

当我开始下载时,文件下载正确。当我进入后台时,下载继续进行。当我终止应用程序并重新启动应用程序时,应用程序输入:

- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error

我发现了这个错误:

The operation couldn't be completed. (NSURLErrorDomain error -999.)

似乎我无法在应用程序终止时恢复下载。正确吗?要继续下载,我必须让应用程序在后台处于事件状态吗?

谢谢安德里亚

最佳答案

一些观察:

  1. 错误 -999 是 kCFURLErrorCancelled

  2. 如果您正在使用 NSURLSessionDownloadTask,您可以使用后台 session 配置在后台下载这些内容,例如

    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:kBackgroundIdentifier];
    NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];

    如果不使用后台 session (例如,您必须使用数据任务),您可以使用 beginBackgroundTaskWithExpirationHandler 为应用程序请求一点时间,以便在应用程序终止之前在后台完成请求.

  3. 请注意,当使用后台 session 时,您的应用委托(delegate)必须响应 handleEventsForBackgroundURLSession,捕获它将在适当时调用的完成处理程序(例如,通常在 URLSessionDidFinishEventsForBackgroundURLSession).

  4. 您是如何“终止应用程序”的?如果您手动终止它(通过双击主页按钮,按住运行应用程序的图标,然后点击红色的小“x”),这不仅会终止应用程序,还会停止后台 session 。或者,如果应用程序崩溃或只是因为前台应用程序需要更多内存而被放弃,后台 session 将继续。

    就我个人而言,每当我想在应用程序终止后测试后台操作时,我的应用程序中都会有代码崩溃(引用 nil 指针,就像 Apple 在他们的 WWDC 视频介绍 NSURLSession)。显然,您永远不会在生产应用中这样做,但由于内存限制,很难模拟应用被丢弃的情况,因此故意崩溃是该场景的一个很好的代表。

关于ios - 当应用程序以 NSURLSession 终止时,NSURLDomainErrorDomain 错误 -999,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26387176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com