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 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. 下 ...
随机推荐
- python django-admin.py startproject xxx 错误:from django.core import management
1. Python安装路径以及Python安装路径\Script文件夹,已经添加到PATH环境变量中. 2. 查看django 版本正常: import django print(django.__v ...
- tomcat7控制台日志中文乱码
windows电脑 idea启动Tomcat调试程序时,Tomcat控制台输出里,中文是乱码. 解决办法: 修改Tomcat/bin/catalina.bat文件: set JAVA_OPTS= 的内 ...
- 解决vue修改路由的查询字符串(query)url不改变,页面不刷新问题
我个人猜测可能是对路由的数据检测深度不够吧,单纯修改query里面的属性是不能触发数据驱动的,因此要直接给query赋值新的对象才能驱动数据更新,做法如下 第一种 var query=JSON.par ...
- Linux 内核虚拟地址到物理地址转换讨论【转】
转自:https://blog.csdn.net/sunlei0625/article/details/59476987 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请 ...
- 如何使用postman判断返回结果是否正确
针对一个接口,我们在知道参数以及参数对应的结果时,可以通过postman进行判断,验证返回数据是否与预期数据相等.这样可以使我们的接口测试更加的方便简洁. 1.准备数据. postman可以接受的文件 ...
- Linux下安装redis报错信息
redis在Linux安装报错 标签: redislinuxcentos 2017-02-24 13:46 384人阅读 评论(0) 收藏 举报 分类: Linux安装工具(2) 版权声明:本文为 ...
- MacOS命令行打包+签名+公证+生成dmg文件
关于dmg文件是什么,和为什么要进行公证? 简单说下,dmg文件就是一个可直接在mac上安装的安装包,我自己的理解是就像windows上的exe安装包一样: 公证是将app传到苹果商店去做认证,如果不 ...
- 基于Docker的Consul服务发现集群搭建
在去年的.NET Core微服务系列文章中,初步学习了一下Consul服务发现,总结了两篇文章.本次基于Docker部署的方式,以一个Demo示例来搭建一个Consul的示例集群,最后给出一个HA的架 ...
- React: 认识React
一.简介 React-Native是Facebook开源的跨平台框架,用于实现前端和原生进行混合开发.React-Native开发可以很好的使用原生UI构建用户界面,与传统的使用WebView相比,不 ...
- dell服务器已有阵列新增的磁盘无法识别显示外来
问题描述: 今天遇到个插入新硬盘显示外来盘,然后不可用,然后电话问了一下戴尔的工程师 说需要清除一下原来磁盘的阵列信息之类的,才能识别到,这里就做一个笔记记录一下,顺便分享给有需要的朋友! 解决方法: ...