HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 在后台下载/上传完成后,它是否是使用后台任务获取额外HTTP请求的正确方法?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在后台下载/上传后发出额外的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
}

最后一件事是实现应用程序委托方法

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

}

这是在背景转移后做一些工作的正确方法吗?

解决方法

如果内存服务,最好的方法是在调用完成块之前启动新请求.但请注意,无论您如何操作,如果您反复提出简短请求,操作系统将迅速增加后台下载完成与您的应用程序在后台重新启动以处理会话事件之间的延迟.

大佬总结

以上是大佬教程为你收集整理的ios – 在后台下载/上传完成后,它是否是使用后台任务获取额外HTTP请求的正确方法?全部内容,希望文章能够帮你解决ios – 在后台下载/上传完成后,它是否是使用后台任务获取额外HTTP请求的正确方法?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。