Я использую структуру WatchConnectivity для получения строки из своего приложения. Вот как я отправляю строку в Obj-C из приложения:Watch Connectivity: didReceiveMessage не называется
-(void) viewDidLoad {
//WATCHKIT
WCSession* session = [WCSession defaultSession];
session.delegate = self;
[session activateSession];
[self sendInfoToWatch];
}
-(void) sendInfoToWatch {
WCSession* session = [WCSession defaultSession];
session.delegate = self;
[session activateSession];
[session sendMessage:@{@"a":@"hello"} replyHandler:^(NSDictionary<NSString *,id> * _Nonnull replyMessage) {
} errorHandler:^(NSError * _Nonnull error) {
}];
}
Приложение My Watch находится в Swift. Это, как я получить сообщение:
Note: "wc session is supported" works and gets logged to the console
override func willActivate() {
if(WCSession.isSupported()){
NSLog("wc session is supported")
self.session = WCSession.defaultSession()
self.session.delegate = self
self.session.activateSession()
}
super.willActivate()
}
Следующая функция никогда не вызывается, ни один из NSLog показывают вверх, поэтому QRCodeTitleLabel не обновляет свой текст.
func session(session: WCSession, didReceiveMessage message: [String : AnyObject]) {
//recieving message from iphone
QRCodeTitleLabel.setText(message["a"]! as? String)
NSLog("This was called")
NSLog((message["a"]! as? String)!)
}
Кто-нибудь знает, почему этот метод не называется?
Кроме того, я импортировал WatchConnectivity и включил WCSessionDelegate после моего имени класса.
Edit:
Я добавил функцию с replyHandler, но этот метод до сих пор не называется:
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
QRCodeTitleLabel.setText(message["a"]! as? String)
NSLog("This was called")
NSLog((message["a"]! as? String)!)
}
Если вы добавите NSLog в errorHandler, он регистрирует ошибку? Если так, то, что это? – ccjensen
@ccjensen Ну, «Это вызвано» никогда не отправляется на консоль, поэтому весь метод не вызывается. Так что ничего не появляется, когда я NSLog replyHandler. По ошибке Хэндлер, я предполагаю, что вы имели в виду ответHandler. Нет ошибкиHandler ... есть ли еще одна функция, которую я должен вызывать для проверки ошибок (я не вижу ее в документации) –
Я имел в виду ошибкуHandler на стороне отправки (вызов sendMessage). Если сообщение не доставлено, оно должно быть вызвано с помощью NSError, которое может нам подсказывать, почему вещи не работают для вас. – ccjensen