为什么上传alamofire后台请求不在后台执行?

时间:2017-02-04 16:44:23

标签: swift xcode alamofire

我使用alamofire将30 MB的zip文件上传到服务器

这是我的要求

let configuration = URLSessionConfiguration.background(withIdentifier: "identifire.com")

    alamoFireManager = Alamofire.SessionManager(configuration: configuration)

let tempZipFilePath = UtilDirectory.tempZipPath.tweak()

    alamoFireManager.upload(URL(fileURLWithPath: tempZipFilePath),
                            to: deligate.url,
                            method: .post,
                            headers: headers)
        .uploadProgress(closure: {
            progress in
            print("Upload Progress: \(progress.fractionCompleted)")
        })
        .validate()
        .responseJSON {}

当请求开始时,我可以看到上传进度uploadProgress(closure:_),但如果我关闭应用,则会暂停上传。

我希望在关闭应用程序请求后必须在没有中断的情况下完成执行。

但为什么后台上传请求正在停止?

1 个答案:

答案 0 :(得分:0)

您必须使用后台任务。您的应用仍然可能被杀死。这取决于操作系统。看看这个https://developer.apple.com/documentation/uikit/uiapplication/1623031-beginbackgroundtask

从UIApplication文档中:

  

使用您的UIApplication对象执行以下操作...   执行应用程序,以便它可以在后台完成任务   (beginBackgroundTask(expirationHandler :),   beginBackgroundTask(withName:expirationHandler:))