URLSession停止在WatchOS 6上运行,与OS 5相比有什么变化吗?

时间:2019-07-01 23:41:34

标签: swift nsurlsession watch-os-6

我有一个使用iOS,todayExtension和watchOS作为目标的应用程序。

在发布新的iOS 13之前,一切工作正常,那一周我在iPhone上下载了iOS 13 beta,在手表上下载了watchOS 6。然后,突然我的应用停止在手表上工作了。当我将其调试时,我发现没有URLSession请求正在完成。发生了什么大变化?

    class func verifyInternet(errorHandler:@escaping (String) -> (), completionHandler:@escaping (JSON) -> ()) {

        let myUrl = URL(string: "https://google.com/")
        var request = URLRequest(url:myUrl!)
        request.httpMethod = "GET";
        request.httpBody = nil
        request.cachePolicy = URLRequest.CachePolicy.reloadIgnoringLocalCacheData
        let task = URLSession.shared.dataTask(with: request as URLRequest, completionHandler: {
            data, response, error in
            if error != nil
            {
                errorHandler(error.debugDescription)
                return
            }
            if response.debugDescription.contains("Status Code: 200") {
                completionHandler("connection ok")
                return
            }
            if response != nil, let jsonString = JSON(parseJSON: response!.description) as? JSON {
                //convert the JSON to raw NSData
                do {
                    let json = try  jsonString //JSON(data: dataFromString)
                    if json.dictionary?.keys.first?.contains("error") ?? false {
                        errorHandler(json.dictionary?.values.first?.stringValue ?? "error")
                    }
                    completionHandler(json)
                } catch {
                    print("Error \(error)")
                }
            }
        })
        task.resume()
    }

这实际上是我的一些代码,它们在OS 5上运行良好,而在OS 6(Simulator和Watch)上运行不正常(我已经尝试标记“独立于iPhone运行”选项)。我会在这里粘贴我遇到的错误,但是当我在Watch模拟器上运行代码时,调试器不会打印任何内容:)。

1 个答案:

答案 0 :(得分:0)

经过大量调试后,我注意到您应该选中“项目”>“监视扩展”>“常规”>“部署信息”下的“无需安装iOS应用程序即可运行支持”复选框。 Check that checkbox so the Watch Simulator has internet connection. 在Xcode beta上,手表模拟器永远不会像在Xcode 10.3上那样与手机模拟器一起启动。如果您不选中该框,则手表将永远无法连接互联网,因为它依赖于不存在的手机。

希望其他用户觉得这些信息有用!