通信机制网络
(1)用户须要开启蓝牙链接Watch后在APP中进行设置,调整手表与iPhone的交互关系,蓝牙距离9米,超过距离,断开链接session
(2)iPhone 与AppleWatch处于同一Wi-Fi网络(或者链接到由iPhone创建的Wi-Fi热点),只要信号存在,双方距离多远均可以app
(3)watch应用对象添加到项目后,包含Watch App 和 WatchKit Extension。Watch App 位于iWatch上,目前只容许包含storyboard 和 Resource文件;Watch Extension 位于用户的iPhone安装的对应App上,这里包括咱们须要实现的代码逻辑和其余资源。这两部分经过Watch Kit进行链接通信,用户点击Watch App后,与Watch匹配的iPhone会启动WatchKit extension,而后和Watch创建链接,产生通讯框架
iPhone和Apple Watch通讯的API操作系统
(1)使用WKInterfaceController中的openParentApplication:rely:方法在后台唤醒iPhone端 主应用,由主应用去进行网络数据的处理,处理完返回WatchKit扩展所需的数据线程
//WatchKit Extension 发送请求唤醒主应用代理
+ (BOOL)openParentApplication:(NSDictionary *)userInfo reply:(void(^)(NSDictionary * replyInfo,NSError * error))reply;对象
(2)主应用处理watchKit请求的方法,UIApplicationDelegate队列
-(void)application:(UIApplication*)application handleWatchKitExtensionRequest:(NSDictionary*)userInfo reply:(void (^)(NSDictionary *))reply;事件
须要注意的是主应用每次执行UIApplicationDelegate方法,处理完成WatchKit的请求后都要回调reply(replyInfo);不然这个方法会响应失败。
iPhone app 和它的Watch app通讯
iPhone app可使用Darwin Notification Center(Core Foundation框架的API) 通知WatchKit Extension 一个特定的事件
【注】一个应用只有惟一一个Darwin Notification Center,全部的Drawin通知都是系统级的,要想通知发出,主线程须要在一个经常使用的模式下运行,Watch 和iPhone 必须在前台运行才能处理发送和接收Darwin通知,不能经过Darwin通知传送对象,只能携带一个名字和userInfo字典,Darwin通知是非持久性的,是即时传送的,若是放置后台,通知就会丢失
使用App Groups 共享数据
使用App Groups 和 NSUserDefaults 在iOS应用和WatchKit 扩展之间共享少许数据很是容易,对于其余资源,好比Core Data ,可以使用共享容器来简化它们之间的数据访问而且保持最新的数据
使用Handoff
Handoff 容许用户简单的在iPhone和Apple Watch 之间切换任务,WKInterfaceController中的Handoff API可被用在Glance和自定义通知界面中,能够传给应用程序的主界面控制器
iPhone 和 Watch 双向通讯iOS9 (既能够Watch向iPhone发送数据,也可让iPhone主动向Watch发送数据)
Watch Connectivity
一、官方文档的代码
第一行 session是永远支持WatchOS的,这句是为了检查iOS设置是否支持session
第二行 获取一个默认session实例
第三行 设置session的代理
第四行 设置session为活跃状态
2.WCSession的状态
paired 是否与设备配对
WatchAppInstalled WatchApp是否已安装
complication 是否可用
3.通信的分类-WatchConnectivity框架的通讯方式有两种模式,一种是后台传输,另外一种是交互式消息
后台传输是最经常使用的通讯模式,面向内容与用户交互,主要用于传输非即时的内容,体如今内容可由操做系统智能传输(操做系统容许发送方可退出,选择传输机制,支持接收者下次启动时发送,并将内容以队列的方式发送)
类型:应用上下文内容传输,用户数据传输,文件传输
实现步骤:
获取默认的WCSession并开启
实现WCSessionDelegate接收回调方法
发送消息并处理响应消息
接收端处理接收和响应(可选)
WatchConnectivity在iOS8和iOS9中的区别
iOS8 中Watch与iPhone之间的通讯只能经过Watch主动发起请求,iPhone响应这个请求的方式来完成一次通讯,不可以iPhone直接链接Watch,向Watch发送数据
iOS9 中是双向操做
iOS8 中 发送数据的内容只能为普通的字典数据类型
iOS9 不但能发送简单的字典数据,还能够支持发送一些数据(NSData)及文件类型