gpt4 book ai didi

ios - 进入后台时 Alamofire 请求卡住了?

转载 作者:搜寻专家 更新时间:2023-10-30 22:11:18 26 4
gpt4 key购买 nike

我正在使用 Alamofire 调用需要很长时间才能加载的 Web 服务。如果应用程序进入后台,当我返回应用程序时,我会卡在我的加载程序中。我想这是因为调用从不向我的完成处理程序返回任何内容。我该如何解决这个问题?

最佳答案

可以使用后台抓取来解决这个问题。在 Swift 3 中可以通过以下方式完成:

    var backgroundTask: UIBackgroundTaskIdentifier? // global variable        

backgroundTask = UIApplication.shared.beginBackgroundTask(withName: "backgroundTask") {
// Cleanup code should be written here so that you won't see the loader

UIApplication.shared.endBackgroundTask(self.backgroundTask!)
self.backgroundTask = UIBackgroundTaskInvalid
}

在此行之后调用您的 alamofire 服务。在完成处理程序中,使用以下行结束任务。

    UIApplication.shared.endBackgroundTask(self.backgroundTask!)
self.backgroundTask = UIBackgroundTaskInvalid

请注意,应用程序在进入非事件状态之前还有一些后台时间(backgroundTimeRemaining 属性)。你必须在那之前完成你的任务。在剩余后台时间变为零之前不久调用处理程序。此外,对 beginBackgroundTask(withName:){} 方法的每次调用都必须通过对 endBackgroundTask: 方法的匹配调用来平衡。

要使上面给出的代码正常工作,您需要调整应用中的设置。转到“目标”并单击“功能”以进行以下更改

Changes to made in "Target" section

之后,转到您的 info.plist 文件,并将其作为源打开以添加以下代码。

enter image description here

希望对您有所帮助。如果您需要更详细的信息,这些链接可能会有所帮助

关于ios - 进入后台时 Alamofire 请求卡住了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40206853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com