我在我的 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 并再次尝试,但无济于事。我究竟做错了什么?