iOS9新框架—Watch Connectivity(详情:http://ios.itcast.cn/subject/ios9/index.shtml )
1背景。 Watch Connectivity--专为用来实现Watch与配对iPhone上的文件和数据的来回传输而生。
我们知道数据交换在iOS8中就有,我们来来回顾一下iOS8是如何进行数据通信的。

我们知道iOS8只能通过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】iOS8 中 watch 与 iPhone之间通信只能通过 watch主动发起请求,iPhone响应这个请求的方式来完成一次通信,不能够iPhone直接连接watch向watch发送数据。
iOS9中watch 与iPhone之间通信,可以双向操作,既可以watch主动发送数据到iPhone。也可以iPhone主动发送数据到Watch。
2】iOS8中发送数据的内容只能为普通的字典数据类型。
iOS9中不但能发送简单的字典数据,还可以支持发送一些数据(NSData)及文件类型。
iOS9新框架—Watch Connectivity(详情:http://ios.itcast.cn/subject/ios9/index.shtml )的更多相关文章
- ReactiveCocoa - iOS开发的新框架
本文转载至 http://www.infoq.com/cn/articles/reactivecocoa-ios-new-develop-framework ReactiveCocoa(其简称为RAC ...
- 教你轻松看懂 iOS9 新功能
2015苹果全球开发者大会在6月9日凌晨,美国旧金山举行,fir.im 整理了一部分的资料,帮助了解 iOS9 的新特性与功能,感兴趣的可以看下. 关于iOS9新增功能 在WWDC 2015上苹果介绍 ...
- IOS9新特性之Contacts联系人
在以前iOS开发中,涉及联系人相关的编程,代码都非常繁琐,并且框架的设计也不是Objective-C风格的,这使开发者用起来非常的难受.在iOS9中,apple终于解决了这个问题,全新的Contact ...
- ios9适配系列教程——ios9新变化
Demo1_iOS9网络适配_改用更安全的HTTPS iOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL.采用TLS 1.2 协议,目的是 强制 ...
- iOS开发——适配篇&iOS9适配
iOS9适配 1. Demo1_iOS9网络适配_ATS:改用更安全的HTTPS [摘要]iOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL.采 ...
- iOS开发之集成iOS9中的Core Spotlight Framework搜索App的内容
Spotlight在iOS9上做了一些新的改进, 也就是开放了一些新的API, 通过Core Spotlight Framework你可以在你的app中集成Spotlight.集成Spotlight的 ...
- iOS9新特性——堆叠视图UIStackView
一.引言 随着autolayout的推广开来,更多的app开始使用自动布局的方式来构建自己的UI系统,autolayout配合storyBoard和一些第三方的框架,对于创建约束来说,已经十分方便,但 ...
- Facebook新框架React Native,一套搞定App开发[转]
Facebook新框架React Native,一套搞定App开发 本文来自微信公众号“给产品经理讲技术”(pm_teacher),欢迎关注. 做为一名产品经理,你是否遇到过这样的窘境,“帮我把字体调 ...
- iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)--(转)
图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. 下 ...
随机推荐
- 解决vscode中golang插件依赖安装失败问题
vscode中安装ms-vscode.go插件后可以开启对go语言的支持,ms-vscode.go插件需要依赖一些工具,安装完成后提示 gocode go-outline go-symbols gur ...
- 2. 移动安全渗透测试-(Android安全基础)
2.1 Android系统架构 1.应用程序层 平时所见的一些java为主编写的App 2.应用程序框架层 应用框架层为应用开发者提供了用以访问核心功能的API框架 android.app:提供高层的 ...
- python数据库模块
安装数据库 [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.3/centos7-amd64 gpgkey=https://yu ...
- 团队展示&选题
团队展示 1.队名:螺旋升天队 2.队员学号: 李光证 3117004660 (队长) 卢俊杰 3117004662 吴子昊 3117004671 陈浩民 3117004646 陈俊铭 3117004 ...
- Oracle创建表、删除表、修改表(添加字段、修改字段、删除字段)语句总结
创建表: create table 表名 ( 字段名1 字段类型 默认值 是否为空 , 字段名2 字段类型 默认值 是否为空, 字段名3 字段类型 默认值 是否为空, ...... ); 创建一个us ...
- android 获得一些设备信息的静态函数
1.Brand,IMEI,DeviceOS,DeviceFactoryTime public static String getDeviceBrand(Context context) { Strin ...
- 网络管理和nmcli命令的使用——网络接口配置-bonding实验步骤
(实验)网络接口配置-bonding Bonding 将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡.直接给两块网卡设置同\一IP地址是不可以的.通过bonding,虚拟一块网 ...
- [PHP] 解决php中上传大文件的错误
修改nginx配置文件,下面这个参数client_max_body_size 110M; 修改php配置文件中下面两个参数在php.ini中找到下面两个配置,配置项给改大,如果找不到php.ini的位 ...
- Octave中的一些常用操作
>> 5+6ans = 11>> 1~=2ans = 1 %1表示true,0表示false>> 1~=1 %1不等于1ans = 0>> a=2 ...
- Druid-代码段-4-1
所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应主流程4,丢弃连接的守护线程: //连接池瘦身,参考主流程4 public class DestroyConnectionThr ...