【发布时间】: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