2015-09-05 14 views
12

Opracowuję rzut skrótu do mojej aplikacji Apple WatchOS2. Obecnie nie w pełni rozumiem wymagania wstępne dotyczące stabilnego połączenia WatchConnectivity. Mam dziwną sytuację, w której mój kontroler ComplicationController mógł pomyślnie wysłać żądanie sendMessage. Kiedy próbuję spojrzeć na mój rzut oka wniosek sendMessage nie powiodło się:Jaki jest powód, dla którego kod błędu WatchKit2 7007 "sesja na sparowanym urządzeniu nie jest osiągalny"

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

muszę przyznać, że nie rozpocząć moją aplikację na symulatorze. Ale dlaczego mógłby się komendunek ComplicationController komunikować, a WatchController nie. I nie znalazłem żadnego wyjaśnienia na temat błędu 7007 w Internecie.

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)") }) 
} 

Jestem obecnie rozwijających się WatchOS2 Beta 5 i iOS 9 Beta 5. Jestem w pełni świadomy, że jest to wersja beta, ale jest to ostatnia wersja beta przed wydaniem.

+0

1. Jest jeszcze wersja GM i 2. Czy próbowałeś zrestartować? –

+1

Pracownik Apple odpowiedział [tutaj] (https://forums.developer.apple.com/message/42860#42860) i powiedział, że będzie kilka poprawek przychodzących do WCSession i ich osiągalności, gdy rozszerzenie WK zostanie uruchomione dla aktualizacji skrótu w przyszłym seed/release – ccjensen

+0

OK, może powinienem być cierpliwy z Apple i kontynuować moją obecną strategię obejścia. – ChaosSpeeder

Odpowiedz

6

Upewnij się, że debuger jest podłączony tylko do aplikacji Watch i aplikacja iPhone jest uruchamiana bezpośrednio z symulatora.

Uruchom aplikację na telefonie iPhone, aby uzyskać najnowszy kod, a następnie zatrzymaj wykonywanie. Następnie uruchom aplikację Watch i otwórz symulator iPhone'a, a następnie otwórz aplikację na iPhone'a. Po uruchomieniu obu aplikacji (z włączonym debuggerem tylko w aplikacji Watch) nie można wywołać wywołania błędu o numerze sendMessage:replyHandler:errorHandler:, a wiadomość powinna zostać pomyślnie wysłana.

0

spróbuje użyć

WCSession.defaultSession().reachable

w szybkich, by sprawdzić, czy jest to osiągalne.

Cel C[WCSession.defaultSession] isReachable].

Jeśli to powróci wybierz Debuguj -> Dołącz do procesu, a następnie znajdź aplikację, którą chcesz dołączyć, a następnie wybierz, powinna działać.