选择客户端类型

Wear OS 数据层 API 包含几种不同类型的客户端,这些客户端适用于不同类型的数据和不同的连接条件。

本页面介绍了每种客户端类型,并提供了一个表格来比较不同客户端的功能。利用这些信息,您可以选择最适合您的应用的客户端类型。

何时使用 Data Layer API

如果互动严格发生在本地手表和本地手机之间,请使用 Data Layer API。如需查看详细示例,请参阅数据层常见用例。

数据客户端

借助 DataClient 对象,您可以读取 DataItem 或 Asset,或者向其中写入数据:

  • 每个 DataItem 都是一个信息单元,会在用户拥有的所有附近的设备之间广播和同步。DataItem 会永久存储,并且您的设备可以读取其内容,直到数据项被删除。

  • Asset 适用于较大的数据载荷,例如图片或媒体文件。

消息客户端

MessageClient 对象可以发送消息,非常适合进行远程过程调用 (RPC),例如使用 Wear OS 设备控制安装在手持设备上的应用版本。

消息非常适合使用 sendMessage() 的单向请求,或使用 sendRequest() 的请求和响应通信模型。与数据客户端不同,消息客户端需要节点连接到网络才能发送消息。

sendMessage() 方法会尽力向远程节点传递消息,并且不包含任何内置重试机制。如果目标设备在网络传输开始之前断开连接,该方法会返回 TARGET_NODE_NOT_CONNECTED。

信道客户端

ChannelClient 对象提供设备之间面向流的通信。通道是两个节点之间的双向通信管道,适用于以下用例:

  • 当无法连接互联网时,在两台或更多已连接的设备之间传输数据文件。ChannelClient 比 DataClient 更节省磁盘可用空间,后者在与已连接的设备同步之前,会在本地设备上创建资源的副本。
  • 可靠地发送因过大而无法使用 MessageClient 发送的文件。
  • 传输流式数据,例如来自麦克风的语音数据。

打开通道后,您便可以连续字节流的形式发送和接收数据,而不是数据客户端所需的离散 DataItem 单元。

您负责管理数据流并保持数据一致。 渠道客户端不提供与数据客户端相同级别的数据自动同步。

客户端对比

下表比较了不同客户端的功能:

客户端类型 数据持久性 是否支持大于 100 KB 的数据? 要使用的网络 是否可以离线使用?
数据客户端 数据会无限期保留 是(使用 Asset 对象) 建议使用蓝牙。数据会备份到云端;如果蓝牙可用,则此备份会异步完成 是,读写操作均兼容
消息客户端 不持久化,不重试 否 首选蓝牙,但如果只有 Wi-Fi 连接可用,也可以使用 Wi-Fi 否
通道客户端 无持久性(面向连接) 是 首选蓝牙,但如果只有 Wi-Fi 连接可用,也可以使用 Wi-Fi 否

如需详细了解如何使用数据层 API,请参阅同步数据指南。如需了解使用 Data Layer API 时的功耗注意事项,请参阅节省电量指南。