NSURLSessionDelegate에 이상한 문제가 있습니다.4G 및 iOS10에서만 대용량 파일에 NSURLSessionDelegate가 실행되지 않습니다.
class NetworkHandler: NSObject,NSURLSessionDelegate,NSURLSessionDownloadDelegate {
lazy var downloadsSession: NSURLSession = {
let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("abc")
let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil)
return session
}()
func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didFinishDownloadingToURL location: NSURL) {
print("finished")
}
func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
print("\(String(format: "%.1f%% of %@", progress * 100, totalSize))")
}
func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didResumeAtOffset fileOffset: Int64, expectedTotalBytes: Int64) {
print("didResumeAtOffset: \(fileOffset)")
}
func URLSession(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError error: NSError?) {
print("didCompleteWithError error=\(error)");
}
func URLSessionDidFinishEventsForBackgroundURLSession(session: NSURLSession) {
if let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate {
if let completionHandler = appDelegate.backgroundSessionCompletionHandler {
appDelegate.backgroundSessionCompletionHandler = nil
dispatch_async(dispatch_get_main_queue(), {
completionHandler()
})
}
}
}
}
가 여기 내 파일이 20MB ~ 때 내 출력이 있고 난 4G/LTE에있어 : 여기 내 코드는 처음이다 이미 확인했습니다
didCompleteWithError error=Optional(Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL" UserInfo={NSLocalizedDescription=unsupported URL})
내 URL이 HTTP하고 유효한 url. 이 코드는 내가 wifi에 있거나 파일 크기가 < ~ 10MB이거나 iOS10이 아닌 경우 100 %의 시간 동안 작동합니다. 파일은 약 60 %까지 다운로드 된 다음 매번 실패합니다. 나는 아이디어가 잘못되어서 무엇이 잘못 될지 정당화 할 수 없다. 나는 위의 세 조건 중 하나라도 변경하는 경우가 iOS10 파일 크기 ~ 20메가바이트 의 4G/LTE 만 이 때
문제가 발생, 그것을 작동합니다.
내가 Apple code을 시도하고 문제가 동일
이것은 iOS 10의 알려진 버그입니다.이 문제를 해결하는 이유와 해결 방법을 보려면 http://stackoverflow.com/questions/39346231을 찾아보십시오. – Mousavian
@Mousavian에게 감사의 말을 전합니다. 귀하의 답변에 내 코멘트를 확인하십시오 :) – Husyn