繁体   English   中英

错误:“消息回复花了太长时间”向设备监视工具包OS 2发送消息

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM