我编写了将URLRequest发送到applicationWillTerminate的代码,但是得知它是错误的。 还有其他方法可以通知服务器该应用程序已终止吗? 下面的代码接收并返回从服务器返回的数据,但是由于它仅将应用程序的结束通知服务器,因此原则上没有必要。
func applicationWillTerminate(_ application: UIApplication) {
appExitRequest()
}
func appExitRequest() {
let settings = UserDefaults.standard
let id = settings.string(forKey: myId)
guard let myId = id?.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {
return
}
guard let req_url = URL(string: "http://localhost/test.php/terminate?myId=\(myId)") else {
return
}
print(req_url)
let req = URLRequest(url: req_url)
let session = URLSession(configuration: .default, delegate: nil, delegateQueue: OperationQueue.main)
let task = session.dataTask(with: req, completionHandler: {
(data, response, error) in
session.finishTasksAndInvalidate()
do {
print("OK", data ?? "Empty")
} catch {
print("Failure", error)
}
})
task.resume()
}
答案 0 :(得分:0)
答案 1 :(得分:0)
applicationWillTerminate
。
仅当iOS看门狗进程出于诸如高内存消耗之类的原因而杀死您的应用程序时,才会调用它。
因此,如果您信任此方法,仍然无法完全处理用例。 另外,Apple到目前为止还没有公开的本地回调方法来处理这种情况。