今天簡(jiǎn)單學(xué)習(xí)了iWatch的開(kāi)發(fā),做了個(gè)demo
介紹下demo:
iWatch端界面:
iWatch端界面
iPhone端界面:
iPhone端界面
功能:
iPhone端填寫姓名后涛贯,點(diǎn)擊發(fā)送厕氨,即發(fā)送消息(包含姓名、頭像名)給iWatch焕蹄,iWatch接收到消息后逾雄,將姓名和頭像設(shè)置上去,然后返回消息給iPhone告知應(yīng)受到消息腻脏。
效果圖
接下來(lái)是實(shí)現(xiàn)步驟:
搭界面就不再說(shuō)了
Paste_Image.png
首先是iWatch端:
1鸦泳、導(dǎo)入通訊框架
#import <WatchConnectivity/WatchConnectivity.h>//------第一步:通訊框架------
2、簽協(xié)議
@interface InterfaceController()<WCSessionDelegate>//-----第二步:通信協(xié)議------
3永品、激活會(huì)話:
盡量提早激活做鹰,這邊在視圖顯示時(shí)進(jìn)行激活
- (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];//激活會(huì)話
}
4、接著就是實(shí)現(xiàn)該代理方法(收到消息的代理方法)
將消息里面攜帶的信息“message”設(shè)置上去鼎姐,同時(shí)在此處給iPhone端回復(fù)了消息
//收到消息代理方法
-(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發(fā)送回復(fù)消息钾麸,代碼塊參數(shù)不能為nil
[session sendMessage:@{@"result":@"OK!"} replyHandler:^(NSDictionary<NSString *,id> * _Nonnull replyMessage) {
} errorHandler:^(NSError * _Nonnull error) {
}];
});
}
然后是iPhone端的:
步驟與iWatch差不多,這邊是在點(diǎn)擊“發(fā)送”按鈕時(shí)向iWatch發(fā)送消息
1炕桨、導(dǎo)入通訊框架
#import <WatchConnectivity/WatchConnectivity.h>//------第一步:通訊框架------
2饭尝、簽協(xié)議
@interface InterfaceController()<WCSessionDelegate>//-----第二步:通信協(xié)議------
3、激活會(huì)話
- (void)viewDidLoad {
[super viewDidLoad];
WCSession *session = [WCSession defaultSession];
session.delegate = self;
[session activateSession];
}
4献宫、“發(fā)送”按鈕钥平,發(fā)送消息
- (IBAction)sendMsg:(UIButton *)sender
{
dispatch_async(dispatch_get_main_queue(), ^{
//發(fā)送消息給iWatch
[[WCSession defaultSession]sendMessage:@{@"name":self.txtName.text,@"image":@"3.png"} replyHandler:^(NSDictionary<NSString *,id> * _Nonnull replyMessage) {
} errorHandler:^(NSError * _Nonnull error) {
}];
});
}
5、最后是收到iWatch回復(fù)的消息后的處理
-(void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message
{
dispatch_async(dispatch_get_main_queue(), ^{
self.lblRst.text = message[@"result"];
});
}