• AppleWatch___学习笔记(三)iPhone和Apple Watch上的数据同步


      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

  • 相关阅读:
    Picasso的使用
    利用APT实现Android编译时注解
    Android新增的注解
    Android 最早使用的简单的网络请求
    Java中的Type
    Android IntentService
    Android view状态保存
    Android ANR
    Android 文字垂直居中
    Activity Fragment转场动画
  • 原文地址:https://www.cnblogs.com/sunhaijin/p/5009719.html
Copyright © 2020-2023  润新知