我可以成功地下載在後臺一個zip文件與我的應用程序代碼與IOS 10和迅速3.如何將屬性傳遞給swift 3 urlsession didFinishDownloadingTo在後臺下載後委託?
我使用backgroundsession數據任務:
let backgroundSessionConfiguration = URLSessionConfiguration.background(withIdentifier: (prefix + postfix))
let backgroundSession = Foundation.URLSession(configuration: backgroundSessionConfiguration, delegate: self, delegateQueue: OperationQueue.main)
var request = URLRequest(url: dlUrl)
request.httpMethod = "GET"
request.cachePolicy = NSMutableURLRequest.CachePolicy.reloadIgnoringCacheData
let task = backgroundSession.downloadTask(with: request)
task.resume()
但是我不知道什麼是傳遞最佳實踐在下載後委託方法的一些具體的元數據完成:
func urlSession(_ session: URLSession,
downloadTask: URLSessionDownloadTask,
didFinishDownloadingTo location: URL){
我需要這個代表裏面關於下載取決於例如一些信息根據用戶之前做出的選擇。我無法從服務器或網址獲取這些數據。
所以我想有一個變量或字典downloadType告訴我做什麼用的已完成的下載,能有這樣的事情在委託
if downloadType == "normal" ... do this
else ... do that
我不知道我是否可以安全地使用性質應用程序暫停時實現URLSessionDownloadDelegate協議的類的類? 當應用程序被掛起時下載完成時,類實例本身是否會恢復,或者ios是否會創建類的新實例?
那麼這將會一直工作:
class ServerCom: NSObject, URLSessionDownloadDelegate {
var updateTypeStr = ""
[...]
func somePublic(setUpdateType: String) {
self.updateTypeStr = setUpdateType
[...]
func urlSession(_ session: URLSession,
downloadTask: URLSessionDownloadTask,
didFinishDownloadingTo location: URL){
[...]
if(self.updateTypeStr == "normal") { // do this
else { // do that
是否有該用例一些更好的方法?
在此先感謝!