我正在使用一个iOS应用程序,该应用程序应该在进入后台模式之前先发出服务器请求。我的应用程序不应该等待响应,因为这不是必需的。此请求的唯一目的是,我需要在数据库中保留应用程序的状态,以了解用户是否在线/离线。
当应用程序进入后台时,我发出服务器请求,并通过sleep(3)将应用程序置于睡眠模式,以便它可以成功完成服务器调用。
func applicationDidEnterBackground(_ application: UIApplication) {
//make a server call
sleep(3) //so that app can submit request to server before closing
}
这很好用,但是如果我在睡眠时间结束之前再次打开应用程序(进入前台),则该应用程序不会响应任何类型的用户输入/提示。即使applicationDidBecomeActive方法也不会被调用。它等待着我之前设定的睡眠时间结束。
应用激活后,如何取消睡眠模式?
答案 0 :(得分:2)
请勿使用sleep
。相反,请使用适合后台处理的URLSession发出服务器请求:
let session = URLSession(configuration: .background(withIdentifier: "foo"))