1. apple watch extension数据获取
1.1 watchOS1 使用 openParentApplication:reply: 方法跟app请求数据
1.2 watchOS2 openParentApplication:reply: 方法被弃用,不能调用,需要使用 WCSession
WCSession 使用有几个关键点需要注意:
- app target和 extension target都需要添加 WatchConnectivity.framework
- 调用WCSession的任何方法都需要给WCSession实例设置delegate(WCSessionDelegate)
代码例子:
if ([WCSession isSupported]) {
WCSession* session = [WCSession defaultSession];
session.delegate = self;
[session activateSession];
NSDictionary *message = @{@"RequestType":@"loadMessageList"};
[session sendMessage:message replyHandler:^(NSDictionary<NSString *,id> * _Nonnull replyMessage) {
NSArray *messages = replyMessage[@"data"];
[self.table setNumberOfRows:messages.count withRowType:@"MessageRowController"];
[messages enumerateObjectsUsingBlock:^(NSDictionary * _Nonnull message, NSUInteger idx, BOOL * _Nonnull stop) {
MessageRowController *row = [self.table rowControllerAtIndex:idx];
[row.lbMessage setText:message[@"content"]];
[row.lbTime setText:message[@"addTimeStrToDay"]];
}];
} errorHandler:^(NSError * _Nonnull error) {
}];
}
1.3 另外一种方式是通过App Group方式共享数据
2. apple watch 中显示图片
watchOS中图片用 WKInterfaceImage 对象
- (void)setImage:(nullableUIImage *)image; // 图片在app包下面,用这种方式
- (void)setImageNamed:(nullableNSString *)imageName; // 图片在watch app包下面,用这种方式
3. 发消息时错误7006
有时候iphone端往watch发送消息,说watch上没有安装app。解决办法就是iPhone apple watch app里面找到对应的app的在watch上显示app选项,先取消再打开。