今天简单学习了iWatch的开发,做了个demo
介绍下demo:
iWatch端界面:
iPhone端界面:
功能:
iPhone端填写姓名后,点击发送,即发送消息(包含姓名、头像名)给iWatch,iWatch接收到消息后,将姓名和头像设置上去,然后返回消息给iPhone告知应受到消息。
接下来是实现步骤:
搭界面就不再说了
首先是iWatch端:
1、导入通讯框架
#import <WatchConnectivity/WatchConnectivity.h>//------第一步:通讯框架------
2、签协议
@interface InterfaceController()<WCSessionDelegate>//-----第二步:通信协议------
3、激活会话:
尽量提早激活,这边在视图显示时进行激活
- (void)willActivate {
// This method is called when watch view controller is about to be visible to user
[super willActivate];
WCSession *session = [WCSession defaultSession];
session.delegate = self;
[session activateSession];//激活会话
}
4、接着就是实现该代理方法(收到消息的代理方法)
将消息里面携带的信息“message”设置上去,同时在此处给iPhone端回复了消息
//收到消息代理方法
-(void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message
{
dispatch_async(dispatch_get_main_queue(), ^{
[self.ima setImageNamed:message[@"image"]];
[self.name setText:message[@"name"]];
//向iPhone发送回复消息,代码块参数不能为nil
[session sendMessage:@{@"result":@"OK!"} replyHandler:^(NSDictionary<NSString *,id> * _Nonnull replyMessage) {
} errorHandler:^(NSError * _Nonnull error) {
}];
});
}
然后是iPhone端的:
步骤与iWatch差不多,这边是在点击“发送”按钮时向iWatch发送消息
1、导入通讯框架
#import <WatchConnectivity/WatchConnectivity.h>//------第一步:通讯框架------
2、签协议
@interface InterfaceController()<WCSessionDelegate>//-----第二步:通信协议------
3、激活会话
- (void)viewDidLoad {
[super viewDidLoad];
WCSession *session = [WCSession defaultSession];
session.delegate = self;
[session activateSession];
}
4、“发送”按钮,发送消息
- (IBAction)sendMsg:(UIButton *)sender
{
dispatch_async(dispatch_get_main_queue(), ^{
//发送消息给iWatch
[[WCSession defaultSession]sendMessage:@{@"name":self.txtName.text,@"image":@"3.png"} replyHandler:^(NSDictionary<NSString *,id> * _Nonnull replyMessage) {
} errorHandler:^(NSError * _Nonnull error) {
}];
});
}
5、最后是收到iWatch回复的消息后的处理
-(void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message
{
dispatch_async(dispatch_get_main_queue(), ^{
self.lblRst.text = message[@"result"];
});
}