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