Watch 拡張機能でこのコードを呼び出しています (実際に実行され、ブレークポイントでチェックされます):
[[WCSession defaultSession] sendMessage:@{
@"load": @"main"
} replyHandler:^(NSDictionary<NSString *,id> * _Nonnull replyMessage) {
...
}
} errorHandler:^(NSError * _Nonnull error) {
...
}];
私の親アプリでは、私は持っています:
if([WCSession isSupported]){
NSLog(@"Apple Watch detected, activated watch deletage.");
[WCSession defaultSession].delegate = self;
[[WCSession defaultSession] activateSession];
}
上記のコードは、アプリの起動時に実行され、実装しました:
-(void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message replyHandler:(void (^)(NSDictionary<NSString *,id> * _Nonnull))replyHandler{
...
}
しかし、それは決して呼び出されません。動作するようになったことはありますが、今では、Watch アプリと iOS アプリを一緒に適切にデバッグできません (起動しない、タイムアウトなど)。それらを次々とデプロイします。Watch 拡張機能をデバッグしているときに、sendMessage...
メソッドが呼び出されていることを確認できます (数分後、エラー ハンドラーがタイムアウト エラーで呼び出されます)。問題はありません。WCSession
メイン アプリを起動すると、関連するコードがヒットしていることもわかります。ただし、Watch アプリを起動して通信するときに、didReceivedMessage...
呼び出されることはありません。
iPhone と Watch の両方からアプリを削除し、両方のデバイスを再起動し、Mac を再起動して再試行しましたが、役に立ちませんでした。私は何を間違っていますか?