当应用程序移至后台时如何使URLSession工作

时间:2019-09-04 08:09:05

标签: ios swift background urlsession nsurlsessiondatatask

单击按钮后,我必须实现多个API调用以获取数据并将该数据写入文件。我正在使用Operation Queue和URLSession datatask来实现这一点。在进行此API调用的过程中,如果通过单击“主页”按钮或通过电话将应用置于后台,则该API调用不会被处理。

我尝试了操作队列和Dispatch_async()函数,但是在调用API调用后将应用程序置于后台时,没有任何效果。

当应用程序置于后台时,

API请求甚至应该可以正常工作。如何实现?

4 个答案:

答案 0 :(得分:1)

如果您使用的是datatask,则可以实施background https://medium.com/@abhimuralidharan/finite-length-tasks-in-background-ios-swift-60f2db4fa01b

中详细说明的backgroundTask

如果使用DownloadTask或UploadTask,则可以使用配置

URLSessionConfiguration.background(withIdentifier:
                                   "com.yourapp.bundleidentifier")

答案 1 :(得分:0)

为了使您的应用程序继续在后台处理信息,您需要将配置从default更新为:

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

在关于URLSession的非常不错的教程中,您可以拥有关于此的更多详细信息。

答案 2 :(得分:0)

尝试使用此UIApplication.shared.beginBackgroundTask(expirationHandler:{})及其相关API,希望它适用于您。

答案 3 :(得分:0)

在您的beginBackgroundTask类中添加AppDelegate

func applicationDidEnterBackground(_ application: UIApplication) {

    _ = UIApplication.shared.beginBackgroundTask(expirationHandler: {

    })
}