gpt4 book ai didi

ios - 在后台下载/上传完成后,使用后台任务处理额外的 HTTP 请求是否是一种正确的方法?

转载 作者:搜寻专家 更新时间:2023-10-31 08:24:09 24 4
gpt4 key购买 nike

我想在后台下载/上传后发出额外的 HTTP 请求,以确认应用程序已完成下载/上传。让我向您展示一个简单的示例。

首先我们需要创建下载/上传任务。

let configuration = URLSessionConfiguration.background(withIdentifier: UUID().uuidString)
configuration.sessionSendsLaunchEvents = true
configuration.isDiscretionary = true
let session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil)
session.downloadTask(with: largeFileURL).resume()

然后我们需要在下载/上传完成后触发一些额外的请求。为了防止应用程序被挂起,我正在使用后台任务。

func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {

backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask(expirationHandler: { [weak self] in
finishBackgroundTask()
})

let task = URLSession.shared.dataTask(with: someURL) { data, response, error in
// Process response.
finishBackgroundTask()
}
task.resume()
}

private func finishBackgroundTask() {
UIApplication.shared.endBackgroundTask(backgroundTaskIdentifier)
backgroundTaskIdentifier = .invalid
}

最后是实现应用委托(delegate)方法:

func application(_ application: UIApplication, handleEventsForBackgroundURLSession identifier: String, completionHandler: @escaping () -> Void) {

}

问题

在后台传输后做一些工作是正确的方法吗?

最佳答案

如果没记错的话,最好的方法是在调用完成 block 之前启动新请求。但是请注意,无论您如何操作,如果您反复发出短请求,操作系统将 swift 增加后台下载完成与您的应用程序在后台重新启动以处理 session 事件之间的延迟。

关于ios - 在后台下载/上传完成后,使用后台任务处理额外的 HTTP 请求是否是一种正确的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53947424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com