如何取消iOS应用程序的睡眠模式?

时间:2019-01-30 06:25:49

标签: ios swift

我正在使用一个iOS应用程序,该应用程序应该在进入后台模式之前先发出服务器请求。我的应用程序不应该等待响应,因为这不是必需的。此请求的唯一目的是,我需要在数据库中保留应用程序的状态,以了解用户是否在线/离线。

当应用程序进入后台时,我发出服务器请求,并通过sleep(3)将应用程序置于睡眠模式,以便它可以成功完成服务器调用。

func applicationDidEnterBackground(_ application: UIApplication) {

    //make a server call

    sleep(3) //so that app can submit request to server before closing
} 

这很好用,但是如果我在睡眠时间结束之前再次打开应用程序(进入前台),则该应用程序不会响应任何类型的用户输入/提示。即使applicationDidBecomeActive方法也不会被调用。它等待着我之前设定的睡眠时间结束。

应用激活后,如何取消睡眠模式?

1 个答案:

答案 0 :(得分:2)

请勿使用sleep。相反,请使用适合后台处理的URLSession发出服务器请求:

let session = URLSession(configuration: .background(withIdentifier: "foo"))