
首先,我们需要创建下载/上传任务.
let configuration = URLSessionConfiguration.background(withIDentifIEr: UUID().uuIDString)configuration.sessionSendsLaunchEvents = trueconfiguration.isdiscretionary = truelet 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} 最后一件事是实现应用程序委托方法:
func application(_ application: UIApplication,handleEventsForBackgroundURLSession IDentifIEr: String,completionHandler: @escaPing () -> VoID) {} 题
这是在背景转移后做一些工作的正确方法吗?
解决方法 如果内存服务,最好的方法是在调用完成块之前启动新请求.但请注意,无论您如何 *** 作,如果您反复提出简短请求, *** 作系统将迅速增加后台下载完成与您的应用程序在后台重新启动以处理会话事件之间的延迟. 总结以上是内存溢出为你收集整理的ios – 在后台下载/上传完成后,它是否是使用后台任务获取额外HTTP请求的正确方法?全部内容,希望文章能够帮你解决ios – 在后台下载/上传完成后,它是否是使用后台任务获取额外HTTP请求的正确方法?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)