Rozumiem, że rzeczywiście chcesz stworzyć scenariusz testowy.
Ale jaki kierunek komunikacji chcesz przetestować? Jeśli sprawdzisz dokumentację WCSession
, zawsze określa ona zachowanie zegarka i urządzenia iOS.
Co masz na myśli mówiąc "odłączony"?
Można sprawdzić WCSession.defaultSession().reachable
ale dokumentacją stanach
iOS, wartość TAK, gdy sparowany Apple Obserwować jest w zasięgu i powiązany Watch aplikacja jest uruchomiona na pierwszym planie.
Możesz sprawdzić na paired
, ale musisz również sprawdzić na watchAppInstalled
.
Uważam, że cała komunikacja jest asynchroniczna. Chcesz sprawdzić swój kod errorHandler:
jak w
- (void)sendMessageData:(NSData *)data
replyHandler:(void (^)(NSData *replyMessageData))replyHandler
errorHandler:(void (^)(NSError *error))errorHandler
myślę, że nie jest możliwe, aby przetestować go na symulatorze. Możesz tylko tymczasowo skopiować swój kod błęduHandler, aby odpowiedziećHandlerowi na testowanie.
Oto kod używam do testowania dostępność:
if WCSession.isSupported() {
let session = WCSession.defaultSession()
session.delegate = _modelController
session.activateSession()
_modelController!.transferArrayToWatchWithSession()
}
oraz w _modelController
func transferArrayToWatchWithSession() {
let session = WCSession.defaultSession()
if WCSession.isSupported() && session.watchAppInstalled {
session.transferUserInfo([kWatchControlsDictKey:self.verifiedWatchArray])
} else {
log.info(....")
}
}
Dobry pomysł! Naprawdę nie mogę wysłać danych do iPhone'a po wyjściu z symulatora. Jednak "session.reachable" jest nadal "prawda" na zegarku, a błąd jaki dostaję w 'errorHandler' z' sendMessage (...) 'to' Code = 7001 "Nieznany błąd WatchConnectivity." 'W/the underlying błąd to "Kod = 23" Przekroczono limit czasu ". Czy to właśnie dostajesz na zegarek, gdy iPhone nie jest w zasięgu? – fabian789
To jest jeden z możliwych błędów, ale tylko wtedy, gdy trafisz przyzwoicie mały wyścig. Innym bardziej prawdopodobnym jest błąd nieosiągalny (uważam, że 7007). – ccjensen
Ok. Zgodnie z 'WCError.h', rzeczywiście jest to 7007. Ale tak zazwyczaj,' session.reachable' będzie "false", gdy iPhone się rozłączy? – fabian789