В чем причина того, что сеанс WatchKit2 с кодом ошибки 7007 на сопряженном устройстве недоступен

Я разрабатываю представление для своего приложения Apple WatchOS2. В настоящее время я не совсем понимаю предпосылки для стабильного соединения WatchConnectivity. У меня странная ситуация, что в симуляторе мой ComplicationController может успешно отправить запрос sendMessage. Когда я пытаюсь взглянуть на свой взгляд, запрос sendMessage завершается с ошибкой:

Error Domain=WCErrorDomain Code=7007 
"WatchConnectivity session on paired device is not reachable." 
UserInfo={NSLocalizedDescription=WatchConnectivity session 
on paired device is not reachable.

Я должен признать, что я не запускал свое приложение на симуляторе. Но почему ComplicationController может обмениваться данными, а WatchController — нет. И я не нашел объяснения об ошибке 7007 в Интернете.

override func awakeWithContext(context: AnyObject?) {
    super.awakeWithContext(context)

    WCSession.defaultSession().sendMessage(["request": "getGlancesImages" ], replyHandler: {
        (result) -> Void in
            self.processGetGlancesImages(result)
        }, errorHandler: { NSLog("WatchGlanceController2. \($0.description)") } )
}

В настоящее время я разрабатываю WatchOS2 Beta 5 и iOS 9 Beta 5. Я полностью осознаю, что это бета-версия, но это последняя бета-версия перед выпуском.


person ChaosSpeeder    schedule 05.09.2015    source источник
comment
1. Есть еще релиз GM, и 2. Вы пробовали перезапускать?   -  person saagarjha    schedule 05.09.2015
comment
Сотрудник Apple ответил здесь и сообщил, что в WCSession и его доступность, когда расширение WK работает для обновления взгляда в будущем семени / выпуске   -  person ccjensen    schedule 05.09.2015
comment
Хорошо, может быть, мне следует проявить терпение к Apple и продолжить свою текущую стратегию обходных путей.   -  person ChaosSpeeder    schedule 06.09.2015


Ответы (2)


Убедитесь, что отладчик подключен только к приложению Watch, а приложение для iPhone запускается непосредственно из симулятора.

Итак, запустите приложение для iPhone, чтобы получить последний код, а затем остановите выполнение. Затем запустите приложение Watch, откройте симулятор iPhone и откройте приложение iPhone. После запуска обоих приложений (с отладчиком, подключенным только к приложению Watch) обратный вызов ошибки sendMessage:replyHandler:errorHandler: не должен вызываться, и сообщение должно быть отправлено успешно.

person Iulian Onofrei    schedule 23.09.2015
comment
Иисус, что это за решение? Это работает, но звучит как обходной путь - person sudoExclaimationExclaimation; 10.12.2018

Попробуй использовать

WCSession.defaultSession().reachable

в swift, чтобы проверить, доступен ли он.

Цель C [WCSession.defaultSession] isReachable].

Если он возвращает false/NO, выберите Отладка -> Присоединить к процессу, затем найдите приложение, которое хотите присоединить, затем выберите его, должно работать.

person William Hu    schedule 07.04.2016