Apple Watch的通信机制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apple Watch的通信机制相关的知识,希望对你有一定的参考价值。
通讯机制
(1)用户需要开启蓝牙连接Watch后在APP中进行设置,调整手表与iPhone的交互关系,蓝牙距离9米,超过距离,断开连接
(2)iPhone 与AppleWatch处于同一Wi-Fi网络(或者连接到由iPhone建立的Wi-Fi热点),只要信号存在,双方距离多远都可以
(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
1、官方文档的代码
第一行 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)及文件类型
以上是关于Apple Watch的通信机制的主要内容,如果未能解决你的问题,请参考以下文章
Apple Watch:一个 Watchkit App 可以与多个 iOS App 通信吗?
Apple Watch 和 openParentApplication 在后台