Проблемы с расширением Watchkit NSURLSession в Swift
Я пытаюсь вызвать мой локальный API, чтобы отключить освещение моего дома от моих часов, но у меня возникли проблемы с вызовом url-адреса из расширения watchkit.
В моем ViewController (приложение для iPhone) у меня есть точно такой же код (который работает), но почему-то он не работает, когда я вызываю его в InterfaceController из расширения Watchkit.
@IBAction func confirmTapped() {
let url = NSURL(string: "http://homeserver.local/api/lights/4/0")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
print(NSString(data: data!, encoding: NSUTF8StringEncoding))
}
task!.resume()
}
Я также приложил суть: https://gist.github.com/f72125cd4678069af7af.git
Я что-то упустил очевидно?
2 ответа:
Я не знаю, хорошо ли начинать сеанс NSURLSession из расширения Watch. Если запрос займет много времени, он будет отменен.
Возможно, вы могли бы пинговать часы через openParentApplication: reply и обрабатывать NSURLSession в вашем приложении для iPhone.
В то время как советы Фредерика была твердой совет, посвященный WatchKit, 1,
openParentApplication:reply
больше не доступен на считывается 2. С WatchKit 2 вместо этого вы определенно откроетеNSURLSession
в самом расширении приложения WatchKit, потому что использованиеWCSession
означает, что URL-адрес будет открыт только в том случае, если и когда само приложение iPhone работает либо на переднем плане, либо если оно все еще работает в фоновом режиме, потому что система его не закрыла.Вполне возможно, что проблемы у вас были это произошло потому, что вам нужно было добавить свойство "позволяет произвольные нагрузки" в расширение приложения WatchKit. Смотрите обсуждение в этом, возможно, связанном потоке: NSURLSession возвращает данные как Null на Watch OS2 с помощью Objective-C