Проблемы с расширением 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 2

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