[英]ERROR: “Message reply took too long” sending message to device Watch kit OS 2
从Apple Watch向设备发送消息时出现以下错误
错误域= WCErrorDomain代码= 7012“消息回复花了太长时间。” UserInfo = {NSLocalizedDescription =消息回复耗时太长。,NSLocalizedFailureReason =发生回复超时。}
#import <WatchConnectivity/WatchConnectivity.h>
同时适用于监视和主要应用程序目标,并且符合手表和设备上的委托方法
从手表发送消息给设备
会话确认为可访问
NSDictionary *applicationDict = [[NSDictionary alloc] initWithObjects:@[@"SomethingHere"] forKeys:@[@"valueKey"]]; if([[WCSession defaultSession] isReachable]) { NSLog(@"Reachable"); //<---- Console shows reachable [[WCSession defaultSession] sendMessage:applicationDict replyHandler:^(NSDictionary *reply) { NSLog(@"%@",reply); } errorHandler:^(NSError *error) { NSLog(@"%@",error); //<--- returns error }]; }
设备
在appdelegate didFinishLaunching
// Watch kit session
if ([WCSession isSupported]) {
WCSession *session = [WCSession defaultSession];
session.delegate = self;
[session activateSession];
NSLog(@"\n\n - WatchKit Session Started - \n\n");
}
else{
NSLog(@"WatchKit Session Error");
}
会议确认按预期开始
在设备上接收消息
- (void)session:(nonnull WCSession *)session didReceiveMessage:(nonnull NSDictionary<NSString *,id> *)message replyHandler:(nonnull void (^)(NSDictionary<NSString *,id> * __nonnull))replyHandler {
NSLog(@"Data delagte");
dispatch_async(dispatch_get_main_queue(), ^{
resultFromWatch = [message objectForKey:@"resultDataValue"];
});
}
更新:
- (void) session:(nonnull WCSession *)session didReceiveApplicationContext:(nonnull NSDictionary<NSString *,id> *)message {
dispatch_async(dispatch_get_main_queue(), ^{
});
}
停止根据ccjensen评论收到的错误消息
检查以下事项:
1 /确保在电话端正确实现WCSessionDelegate。 (不知道你到目前为止是否和/或实施了多少)
特别是,请确保您实现了session(_:didReceiveMessage:replyHandler :)。
2 /确保您实际调用WCSessionDelegate中的replyHandler,如文档中所示: “您必须执行回复块作为实现的一部分。” WCSessionDelegate协议参考
3 /一旦你检查了这些,请在重新尝试使用手表之前运行最新版本的iPhone应用程序。
如果这些不起作用,那么这意味着你的WCSessionDelegate实现太慢,因此超时或你在手表和手机之间得到了一个很好的旧时尚网络问题(不太可能在sim中,但可能存在错误)。
希望这可以帮助。
编辑:我没想提到,计数器部分应用程序必须处于活动状态才能响应。 这意味着,iPhone应用程序必须至少在后台(启动一次)才能响应。 如果不是,过了一会儿就会超时。
确保在激活会话之前设置WCSession
委托。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.