나는 성공적 IOS (10) 내 응용 프로그램 코드를 백그라운드에서 zip 파일을 다운로드 할 수 있습니다 및 신속한 3.신속한 3 urlsession에 속성을 전달하는 방법 didFinishDownloading 배경 다운로드 후 위임 하시겠습니까?
은 내가 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){
나는이 델리게이트 내부에서 다운로드에 대한 정보를 필요로한다. 이전에 사용자가 선택한 항목 서버 또는 URL에서이 데이터를 가져올 수 없습니다.
그래서
if downloadType == "normal" ... do this
else ... do that
내가 안전하게 속성을 사용할 수 있는지 모르겠습니다 변수 또는 사전 downloadType가 대리인이 뭔가를 가지고, 완성 된 다운로드와 함께 무엇을 나에게 말하고 싶은 앱이 일시 중지 된 동안 URLSessionDownloadDelegate 프로토콜을 구현하는 클래스의 앱이 일시 중지 된 상태에서 다운로드가 완료되거나 클래스의 새 인스턴스를 만들 때 클래스 인스턴스 자체가 복원됩니까?
그래서이 항상 작동합니다
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
그 사용 사례에 대한 몇 가지 더 나은 방법이 있습니까?
미리 감사드립니다.