我使用以下方法将字典发送到iOS应用程序:
- (void)sendMessage:(NSDictionary<NSString *, id> *)message
replyHandler:(nullable void (^)(NSDictionary<NSString *, id> *replyMessage))replyHandler
errorHandler:(nullable void (^)(NSError *error))errorHandler;
但是我收到了这个错误。我想知道我们的父应用程序如何在watchOS2中处理此请求。
在watchOS1中,我使用openParentApplication
从父应用获取数据,Appdelegate
有handleWatchKitExtensionRequest
来处理该请求。我们如何在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(@"");
}
];
}
答案 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(@"");
}];
}