zoukankan      html  css  js  c++  java
  • iOS9新框架—Watch Connectivity(详情:http://ios.itcast.cn/subject/ios9/index.shtml )

     1背景。 Watch Connectivity--专为用来实现Watch与配对iPhone上的文件和数据的来回传输而生。

      2.iOS8与iOS9发送数据的对比。

      我们知道数据交换在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)及文件类型。

            





  • 相关阅读:
    108. Convert Sorted Array to Binary Search Tree
    How to check if one path is a child of another path?
    Why there is two completely different version of Reverse for List and IEnumerable?
    在Jenkins中集成Sonarqube
    如何查看sonarqube的版本 how to check the version of sonarqube
    Queue
    BFS广度优先 vs DFS深度优先 for Binary Tree
    Depth-first search and Breadth-first search 深度优先搜索和广度优先搜索
    102. Binary Tree Level Order Traversal 广度优先遍历
    How do I check if a type is a subtype OR the type of an object?
  • 原文地址:https://www.cnblogs.com/keyan1102/p/4884829.html
Copyright © 2011-2022 走看看