ios - 在 applicationWillTerminate 中发送请求

原文 标签 ios swift url request xcode8

在我的应用程序中,当用户终止应用程序时,我需要向服务器发送一些指令。在 applicationWillTerminate func 我试图发送它,但它从未到达服务器。我尝试使用 Alamofire 和 native URLSession 但它不起作用。有人知道我怎么寄吗?
我使用此代码

                let request = "\(requestPrefix)setDriverOrderStatus"
    if let url = URL(string:request) {
        var parameters : [String : String] = [:]
        parameters["access_token"] = UserSession.accessToken
        parameters["driver_id"] = UserSession.userID
        parameters["status"] = status
        var req = URLRequest(url: url)
        req.httpMethod = HTTPMethod.put.rawValue
        do {
            req.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted)
        } catch let error {
            print(error.localizedDescription)
        }
        _ = URLSession.shared.dataTask(with: req, completionHandler: { data, response, error in
            guard error == nil else {
                print(error ?? "error")
                return
            }
            guard let data = data else {
                print("Data is empty")
                return
            }
            let json = try! JSONSerialization.jsonObject(with: data, options: [])
            print(json)
        }).resume
    }

最佳答案

对我有用的一种解决方案是在 applicationWillTerminate 末尾添加 sleep 。像这样的功能:

func applicationWillTerminate(_ application: UIApplication) {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    // Saves changes in the application's managed object context before the application terminates.

    // HERE YOU will make you HTTP request asynchronously
    self.postLogoutHistory()

    // 3 is the number of seconds in which you estimate your request 
    // will be finished before system terminate the app process

    sleep(3)

    print("applicationWillTerminate")

    // self.saveContext()
}

关于ios - 在 applicationWillTerminate 中发送请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41393966/

相关文章:

swift - 如何链接到第 3 方 Swift 框架

swift - 在 iOS11 上的键盘后面扩展 UIScrollView 插图

asp.net-mvc-3 - 如何将 anchor 标记添加到我的 URL?

ios - 将对象中的值从 1 更改为 true

ios - 获取iOS View 的实际尺寸

ios - 在 Swift 中使用范围从属性字符串中返回子字符串

javascript - 从网址的开头和结尾删除斜杠

java - 在字符串中查找URL

iOS - CoreBluetooth didDiscoverPeripheral 仅调用一次

ios - 按字母顺序对NSArray进行排序,避免使用某些字符