1背景。 Watch Connectivity--专为用来实现Watch与配对iPhone上的文件和数据的来回传输而生。
2.8与9发送数据的对比。 我们知道数据交换在8中就有,我们来来回顾一下8是如何进行数据通信的。我们知道8只能通过Watch主动向iPhone发送数据,让iPhone做出响应,而不能有一个交互的互动。既然我们说了WatchConnectivity是为文件和数据的来回传输而生,那我们看一下他的通讯图:
我们看到这样的数据流是双向的,也就是说既可以Watch主动向iPhone发送数据,也可以让iPhone主动向Watch发送数据
3.WCSession 通过查看苹果对WatchConnectivity<https://developer.apple.com/library/prerelease/watchos/documentation/WatchConnectivity/Reference/WatchConnectivity_framework/index.html> (链接地址:https://developer.apple.com/library/prerelease/watchos/documentation/WatchConnectivity/Reference/WatchConnectivity_framework/index.html#//apple_ref/doc/uid/TP40015269 <https://developer.apple.com/library/prerelease/watchos/documentation/WatchConnectivity/Reference/WatchConnectivity_framework/index.html>) API描述之后,我们发现对于Watch与iPhone其关联连接作用的类是WCSession,接下来我们来就了解一下WCSession,看一看他的使用。3.1 WCSession简单介绍 我们查看WCSession的API(链接地址为:https://developer.apple.com/library/prerelease/watchos/documentation/WatchConnectivity/Reference/WCSession_class/index.html#//apple_ref/occ/cl/WCSession <https://developer.apple.com/library/prerelease/watchos/documentation/WatchConnectivity/Reference/WCSession_class/index.html>)之后,映入眼帘的是这一段代码:
第一行代码的意思是:Session是永远支持WatchOS的,因此我们是为了检查iOS设置是否支持Session。
第二行的代码意思是:获取一个默认Session实例 第三行的代码意思是:设置Session的代理 第四行的代码意思是:设置Session为活跃状态 3.2WCSession的状态 1】session.paired 是否已与设备配对 2】session.watchAppInstalled watchApp是否已安装 3】session.complicationEnabled complication 是否可用 4.通讯的分类--WatchConnectivity框架的通信方式有两种模式,一种是后台传输,另一种是交互式消息。 1】后台传输 2】互动消息 4.1 后台传输 后台传输模式是最常用的通信模式,面向内容与用户交互,主要用于传输非即时的内容,体现在内容可由操作系统智能传输(操作系统允许发送方可退出,选择传输时机,支持接收者下次启动时发送),并将内容以队列方式发送。 类型: 应用上下文内容传输(Application Context) 用户数据传输(UserInfo) 文件传输 (File) 三者数据传输的代码类似,我们只以File传输为例,写一下示例代码:传输:
获取正在传输的文件内容:接收:
4.2交互消息
1】效果2】实现步骤
获取默认WCSession 并开启 实现WCSessionDelegate接收回调方法 发送消息并处理响应消息 接收端处理接收和响应(可选) 3】代码 开启Session以及发送消息并处理响应消息代码激活Session
实现WCSessionDelegate接收回调方法
5.最后我们通过对比来回顾和深化一下Watch Connectivity框架
1】8 中 watch 与 iPhone之间通信只能通过 watch主动发起请求,iPhone响应这个请求的方式来完成一次通信,不能够iPhone直接连接watch向watch发送数据。 9中watch 与iPhone之间通信,可以双向操作,既可以watch主动发送数据到iPhone。也可以iPhone主动发送数据到Watch。 2】8中发送数据的内容只能为普通的字典数据类型。 9中不但能发送简单的字典数据,还可以支持发送一些数据(NSData)及文件类型。