【问题标题】:Execute newtork code with app in background在后台使用应用程序执行网络代码
【发布时间】:2020-06-03 00:09:55
【问题描述】:

我的应用中有这样的场景:

我必须重复执行 2 块代码 N 次。

在第一个块中,我必须使用 Alamofire 进行网络调用(我调用 HTTP 服务)。 此调用返回数据,在此数据中有一个我必须在设备上下载的图像路径

在第二个区块中,我必须下载图像,然后将其保存在设备上

之后重新开始N次。

我的问题是用户可以在后台拥有应用程序,我希望当应用程序也在后台时这个过程也能继续。

出于这个原因,在调用 Alamofire 之后,我插入了以下代码用于下载图像:

let config = URLSessionConfiguration.background(withIdentifier: "XXXXXX.XXXX")
let session = URLSession(configuration: config, delegate: self, delegateQueue: OperationQueue())
let url = URL(string: "testurl")
let task = session.downloadTask(with: url!)
task.resume()


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

    //save image on device and I recall Alamofire for the next call
}

我的问题是:当应用程序进入后台时,此过程不会执行。 我哪里错了?

【问题讨论】:

    标签: ios swift background alamofire nsurlsessiondownloadtask


    【解决方案1】:

    你需要实现下面的委托,

    func application(_ application: UIApplication,
                 handleEventsForBackgroundURLSession identifier: String,
                 completionHandler: @escaping () -> Void) {
        // send the completion handler as background completion handler
    }
    

    请参阅以下答案以获取更多信息: https://stackoverflow.com/a/44140059/1244403

    【讨论】:

    • 你能解释一下吗?
    • 我阅读了链接,但我不明白在我的情况下如何使用它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    相关资源
    最近更新 更多