【问题标题】:Error when submitting download task with background session in Swift在 Swift 中使用后台会话提交下载任务时出错
【发布时间】:2015-06-18 12:02:05
【问题描述】:

当我尝试使用以这种方式创建的后台会话提交下载 URL 时:

func backgroundSession() -> NSURLSession?{
    var session:NSURLSession?;
    var configuration:NSURLSessionConfiguration!;
    if NSURLSessionConfiguration.respondsToSelector(Selector("backgroundSessionConfigurationWithIdentifier:")){
        configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("myBackgroundSessionIdentifier\(++counter)")
    }
    else{
        configuration = NSURLSessionConfiguration.backgroundSessionConfiguration("myBackgroundSessionIdentifier\(++counter)")
    }
    configuration.allowsCellularAccess = true;
    configuration.timeoutIntervalForRequest = 20.0;
    configuration.timeoutIntervalForResource = 40.0;
    configuration.HTTPMaximumConnectionsPerHost = 1;
    configuration.networkServiceType = .NetworkServiceTypeBackground;
    configuration.discretionary = false;
    let queue=NSOperationQueue.mainQueue()
    session = NSURLSession(configuration:configuration, delegate:self, delegateQueue:queue)
    return session;
}

应用程序崩溃:

CFNetwork SSLHandshake 失败 (-9810)

当我提交相关任务时:

let url=NSURL(fileURLWithPath: escapedUrlString!);
let task = backgroundSession()?.downloadTaskWithURL(url!, completionHandler: {[weak self](data, reponse, error) in
        //UIApplication.sharedApplication().applicationIconBadgeNumber = 3;
    })
task!.resume()

如果我使用以下创建的标准会话来做同样的事情:

 NSURLSession.sharedSession()

连接没有问题,但当应用程序处于非活动状态时,当然会停止提交。

错误的根源可能是什么问题?

【问题讨论】:

  • 你使用的是哪个 ios sdk ios9?
  • 是的,一台装有 iOS 9 的 iPad 2;现在我尝试在我的 iOS 7 iPhone 4 上执行它,它什么也没说就崩溃了。不幸的是,我没有 iOS 8 设备。
  • 我猜是本地WIFI安全问题,换个网络再试试(3G最快)
  • 我尝试在我的 iOS 7 iPhone 4 上执行它,但它什么也没说就崩溃了。在模拟器上执行时,它在第二次调用时崩溃。不幸的是,我没有 iOS 8 设备。现在我正在尝试执行它来禁用 wifi。
  • 而且“幸运的是”——让一个应用只在 3G 上运行是不可能的——它也会在 3G 网络上崩溃。

标签: swift nsurlsession nsurlsessionconfiguration


【解决方案1】:

我丢失了对该线程的引用,但问题以某种方式得到了解决。

【讨论】:

  • 问题以某种方式得到解决并不是真正的有效答案
  • 事实上它甚至没有解决:我一直在通过后台会话处理今日通知中的 url,它们是单发的。第一次调用时,定期执行,下一次则不执行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-20
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
  • 1970-01-01
  • 2018-07-22
  • 1970-01-01
相关资源
最近更新 更多