WatchKit App类似于之前iOS 8上新推出的App Extension(应用扩展),比如Today Extension(今天扩展)和Share Extension(分享扩展)。只要你对iOS开发有一定经验,UI的搭建相对是比较容易的。重点在于如何让iPhone和Apple Watch上的数据同步

  1.背景。

   Watch Connectivity--专为用来实现Watch与配对iPhone上的文件和数据的来回传输而生。既然我们说了WatchConnectivity是为文件和数据的来回传输而生,那我们看一下他的通讯图:

我们看到这样的数据流是双向的,也就是说既可以Watch主动向iPhone发送数据,也可以让iPhone主动向Watch发送数据.

2.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,看一看他的使用。

  2.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为活跃状态

  2.2WCSession的状态

  1】session.paired  是否已与设备配对

  2】session.watchAppInstalled  watchApp是否已安装

  3】session.complicationEnabled  complication 是否可用

3.通讯的分类--WatchConnectivity框架的通信方式有两种模式,一种是后台传输,另一种是交互式消息。

  1】后台传输

  2】互动消息

  3.1 后台传输

  后台传输模式是最常用的通信模式,面向内容与用户交互,主要用于传输非即时的内容,体现在内容可由操作系统智能传输(操作系统允许发送方可退出,选择传输时机,支持接收者下次启动时发送),并将内容以队列方式发送。

  类型:

  应用上下文内容传输(Application Context)

  用户数据传输(UserInfo)

  文件传输 (File)

  三者数据传输的代码类似,我们只以File传输为例,写一下示例代码:

传输:

获取正在传输的文件内容:

接收:

接下来我们来实现一个效果,效果如下所示:

 (1)实现步骤

  获取默认WCSession 并开启

  实现WCSessionDelegate接收回调方法

  发送消息并处理响应消息

  接收端处理接收和响应(可选)

  (2)代码

  开启Session以及发送消息并处理响应消息代码

  激活Session

  实现WCSessionDelegate接收回调方法

 最后我们通过对比来回顾和深化一下Watch Connectivity框架

  1】iOS8 中 watch 与 iPhone之间通信只能通过 watch主动发起请求,iPhone响应这个请求的方式来完成一次通信,不能够iPhone直接连接watch向watch发送数据。

  iOS9中watch 与iPhone之间通信,可以双向操作,既可以watch主动发送数据到iPhone。也可以iPhone主动发送数据到Watch。

  2】iOS8中发送数据的内容只能为普通的字典数据类型。

  iOS9中不但能发送简单的字典数据,还可以支持发送一些数据(NSData)及文件类型

https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/WatchKitProgrammingGuide/index.html#//apple_ref/doc/uid/TP40014969-CH8-SW1

AppleWatch___学习笔记(三)iPhone和Apple Watch上的数据同步的更多相关文章

  1. MongoDB学习笔记三—增删改文档上

    插入insert 单条插入 > db.foo.insert({"bar":"baz"}) WriteResult({ }) 批量插入 > db.fo ...

  2. scrapy学习笔记(三):使用item与pipeline保存数据

    scrapy下使用item才是正经方法.在item中定义需要保存的内容,然后在pipeline处理item,爬虫流程就成了这样: 抓取 --> 按item规则收集需要数据 -->使用pip ...

  3. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  4. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  5. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  6. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

  7. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  8. Java IO学习笔记三

    Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...

  9. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

随机推荐

  1. winfrom 无边框窗体移动和阴影

    无边框窗体移动: //窗体移动API [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [ ...

  2. android-时间选择器和日期选择器

    一.实现动态输入日期和时间 * DataPicker(日历选择器) * DataPicker对象以init()方法指定DatePicker初始的年月日及OnDateChangedListener事件 ...

  3. windows信息

    echo system('systeminfo'); echo "系统类型".php_uname("s")."<br>"; ec ...

  4. php引用&符号详解——————给变量起小名

    学习了这篇博客[http://blog.csdn.net/jiedushi/article/details/6428585] php中引用采用的是“写时拷贝”的原理,就是除非发生写操作,指向同一个地址 ...

  5. javascript平时小例子⑤(投票效果的练习)

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  6. 深入了解ios系统机制

    1.什么叫ios?        ios一般指ios(Apple公司的移动操作系统) .        苹果iOS是由苹果公司开发的移动操作系统.苹果公司最早于2007年1月9日的Macworld大会 ...

  7. js 字符串拼接

    正常来说已经使用es6 的 模板了如`` //页面层 layer.open({ type: 1, content:`<div class="child_card"> & ...

  8. php有效的过滤html标签,js代码,css样式标签

    过滤html标签�php中太简单了,我们可以直接使用strip_tags函数来实现了,下面给各位整理了一些关于 strip_tags函数的例子. php过滤html的函数:strip_tags(str ...

  9. xml、文件操作功能类

    我一个项目中用到的,里面的方法不是太通用,但是可以从里面找到一些有用的代码,以后慢慢添补更新: FileUtil.xml package com.novel.util; import java.io. ...

  10. php课程---练习(联系人信息表)

    做一个联系人表,实现增删改功能 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...