NSURLSessionDownloadTask无法在设备上完成

时间:2014-08-14 11:53:17

标签: ios swift nsurlconnection nsurlsession nsurlsessiondownloadtask

我正在尝试使用swift和iOS 8中的以下代码实现NSURLSessionDownloadTask:

var dlURL = NSURL(string: http://thedownloadurl")

var defaultConfigObject = NSURLSessionConfiguration.defaultSessionConfiguration()
defaultConfigObject.timeoutIntervalForRequest = 300.0
defaultConfigObject.allowsCellularAccess = true

var defaultSession = NSURLSession(configuration: defaultConfigObject, delegate: self, delegateQueue: NSOperationQueue.mainQueue())
var downloadTask = defaultSession.downloadTaskWithURL(dlURL)
downloadTask.resume()

我用以下方式捕获回复:

func URLSession(session: NSURLSession!, downloadTask: NSURLSessionDownloadTask!, didFinishDownloadingToURL location: NSURL!) {
    println("Downloaded to location: \(location)")

    let str = NSString(contentsOfURL: location, encoding: NSUTF8StringEncoding, error: nil)
    println(str)
    var localNotify = UILocalNotification()
    localNotify.alertBody = "Download completed"
    localNotify.soundName = UILocalNotificationDefaultSoundName
    UIApplication.sharedApplication().presentLocalNotificationNow(localNotify)
}

当我运行时,这是模拟器,所有工作都按预期工作,即使设备被锁定屏幕,它也会在屏幕上显示漂亮的通知完成下载。但是,当我在iPhone 4s上测试它时,只有在我将应用程序放回前台后才能完成下载。 关于为什么会这样的任何想法?

编辑: 为了完整起见,我也尝试了

var defaultConfigObject = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("uniqueIdentifier")

但是,只有当应用程序处于前台时才会完成下载。

谢谢!

0 个答案:

没有答案