在watchOS2中的Watch应用程序和iOS应用程序之间共享数据

时间:2015-09-24 08:57:15

标签: ios objective-c watchkit watch-os-2

我使用以下方法将字典发送到iOS应用程序:

- (void)sendMessage:(NSDictionary<NSString *, id> *)message 
  replyHandler:(nullable void (^)(NSDictionary<NSString *, id> *replyMessage))replyHandler 
  errorHandler:(nullable void (^)(NSError *error))errorHandler;

但是我收到了这个错误。我想知道我们的父应用程序如何在watchOS2中处理此请求。

在watchOS1中,我使用openParentApplication从父应用获取数据,AppdelegatehandleWatchKitExtensionRequest来处理该请求。我们如何在watchOS2中处理这个问题?

我的界面控制器:

- (void)awakeWithContext:(id)context 
{
   [super awakeWithContext:context];
   if([WCSession isSupported])
   {
     self.watchSession = [WCSession defaultSession];
     self.watchSession.delegate = self;
     [self.watchSession activateSession];
   }
   [self sendRequestWithActionType:@"InitialView"];
}

-(void)sendRequestWithActionType:(NSString *)action
{
    NSDictionary *requst = @{@"request":action};
    [[WCSession defaultSession] sendMessage:requst
                           replyHandler:^(NSDictionary *replyHandler) {
                               [self setTextForLabelWithData:[replyHandler valueForKey:@"response"]];
                           }
                           errorHandler:^(NSError *error) {
                               NSLog(@"");
                           }
 ];
}

1 个答案:

答案 0 :(得分:8)

以下是使用带有回复的sendMessage的示例:

发送方:

.ctor

接收方:

-(void)sendRequestWithActionType:(NSString *)action {
    NSDictionary *request = @{@"request":action};
    [[WCSession defaultSession] sendMessage:request
                       replyHandler:^(NSDictionary *replyHandler) {
                           [self setTextForLabelWithData:[replyHandler valueForKey:@"response"]];
                       }
                       errorHandler:^(NSError *error) {
                           NSLog(@"");
                       }];
}