单击按钮后,我必须实现多个API调用以获取数据并将该数据写入文件。我正在使用Operation Queue和URLSession
datatask
来实现这一点。在进行此API调用的过程中,如果通过单击“主页”按钮或通过电话将应用置于后台,则该API调用不会被处理。
我尝试了操作队列和Dispatch_async()
函数,但是在调用API调用后将应用程序置于后台时,没有任何效果。
API请求甚至应该可以正常工作。如何实现?
答案 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: {
})
}