从观看应用程序向iOS应用程序发送消息时,'isReachable'为false

Nag*_*dra 9 ios apple-watch watchkit

我想从观看应用程序向iOS应用程序发送即时消息.在XCode7 beta 4版本中实现了以下代码,并在两个模拟器中保持应用程序的前景.这是我实现的代码

在watchkit interfaceController中


    -(void)willActivate 
    {
        [super willActivate];
        if ([WCSession isSupported]) {
            WCSession *session = [WCSession defaultSession];
            session.delegate = self;
            [session activateSession];
        }
    }

-(IBAction)buttonClicked
{
    NSDictionary *applicationDict = [[NSDictionary alloc] initWithObjects:@[@"Hi"] forKeys:@[@"key"]];
    if([[WCSession defaultSession] isReachable])
    {
        [[WCSession defaultSession] sendMessage:applicationDict
                                   replyHandler:^(NSDictionary *reply) {

                                       NSLog(@"%@",reply);

                                   }

                                   errorHandler:^(NSError *error) {

                                       NSLog(@"%@",error);

                                   }];
    }
}


在iOS应用程序类中


    -(void)viewDidLoad 
    {
        [super viewDidLoad];
        if ([WCSession isSupported]){
            WCSession *session = [WCSession defaultSession];
            session.delegate = self;
            [session activateSession];
        }
    }


    -(void)session:(nonnull WCSession *)session 
    didReceiveMessage:(nonnull NSDictionary *)message replyHandler:(nonnull void (^)(NSDictionary * __nonnull))replyHandler 
    {
        dispatch_async(dispatch_get_main_queue(), ^{
            self.testLbl.text = [message objectForKey:@"key"];
            [self.view setNeedsDisplay];
        });
    }

Kyl*_*arn 5

必须使用sendMessageAPI 吗?我发现它们也不可靠且不可预测。我最终使用了applicationContextAPI。手表不必可达,但如果可达,它会立即到达。如果不可到达,它会在应用程序启动时交付。每次更新应用程序上下文时,它都会覆盖以前的版本,这可能不是您想要的。