Перестал работать URLSession на WatchOS 6, что-то изменилось с OS 5?
У меня есть приложение, которое использует iOS, todayExtension и watchOS в качестве целей.
До запуска новой iOS 13 все работало нормально, на той неделе я загрузил бета-версию iOS 13 на свой iPhone и 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"). Я вставил сюда ошибку, которую я получаю, но когда я запускаю свой код на симуляторе часов, отладчик ничего не печатает:).
1 ответ
После долгих отладок я заметил, что вы должны установить флажок "Поддержка запуска без установки приложения iOS" в разделе "Проект"> "Расширение наблюдения"> "Общие"> "Информация о развертывании". В бета-версии Xcode симулятор часов никогда не загружается с симулятором мобильного телефона, как это было в Xcode 10.3. Если вы не установите этот флажок, часы никогда не будут подключены к Интернету, так как это зависит от сотового телефона, которого там нет.
Я надеюсь, что другие пользователи найдут эту информацию полезной!