在后台URLSession中获取响应

时间:2019-05-30 02:38:58

标签: ios swift alamofire

我正在执行的帖子可能要花几秒钟才能回来,以及启用后台模式的方法。我想弄清楚应用程序是否在等待帖子返回时进入后台,我能以某种方式获得响应吗?

let bgSessionConfig = URLSessionConfiguration.background(withIdentifier: identifier)
bgSessionConfig.sharedContainerIdentifier = "myid"
backgroundSessionManager = SessionManager(configuration: bgSessionConfig)

基本上,如果在后台,下面的completionHandler是否会被调用?

sessionManager.request(url, method: .post, parameters: dataParameters, encoding: parameterEncoding, headers: finalHeaders)
            .validate()
            .responseJSON(queue: self.dispatchQueue, completionHandler: {response in

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

1 个答案:

答案 0 :(得分:0)

handleEventsForBackgroundURLSession中的完成处理程序不是“被调用”的东西。当urlSessionDidFinishEvents到达时,必须调用它。 “被称为”就是handleEvents本身。您在这里的工作是指定后台URL会话(如果刚刚启动,则可能创建它),并立即为其指定委托。 是通过普通的代表消息与您联系的方式。

如果不是 后台会话,您将收到某些委托消息;好了,现在当 是后台会话时,您将收到那些委托消息。