概览

Nearby Connections 是一种点对点联网 API,可让应用轻松发现附近的设备、连接到这些设备并与这些设备实时交换数据,而无需考虑网络连接情况。

一些示例应用场景:

  • 协作式白板:在共享的虚拟白板上与附近的参与者一起记下想法。
  • 本地多人游戏:设置多人游戏并邀请附近的其他用户加入。
  • 多屏游戏:使用手机或平板电脑作为游戏控制器,畅玩显示在附近的大屏 Android 设备(例如 Android TV)上的游戏。
  • 离线文件传输:快速分享照片、视频或任何其他类型的数据,无需连接网络。

简介

Nearby Connections 支持以完全离线的对等方式在附近的设备之间进行通告、发现和连接。设备之间的连接具有高带宽、低延迟的特点,并且经过全面加密,可实现快速、安全的数据传输。

此 API 的主要目标是提供一个简单、可靠且高性能的平台。在底层,该 API 结合使用了蓝牙、BLE 和 Wi-Fi 技术,充分发挥每种技术的优势,同时避开各自的缺点。这有效地抽象了各种平台和操作系统版本中蓝牙和 Wi-Fi 的不确定性,使开发者能够专注于对用户重要的功能。

API 概览

API 的使用分为两个阶段:连接前和连接后。

在连接前阶段,广告客户会宣传自己,而发现者会发现附近的广告客户并发送连接请求。当发现者向广告客户发送连接请求时,会启动对称身份验证流程,最终双方会独立接受(或拒绝)连接请求。

当连接请求被双方接受后,连接即被视为已建立,设备进入连接后阶段,在此阶段双方可以交换数据。

广告和发现

广告客户将对其他发现者可见,并且当发现新的广告客户或广告客户丢失时,发现者会收到通知。

建立连接

当发现者希望与附近的广告客户建立连接时,可以请求连接。

双方都会收到有关连接启动过程的通知,并且双方都有机会接受或拒绝连接。

双方都做出回应后,系统会通知双方结果。如果双方都接受了连接,则连接被视为已建立,然后可以开始数据传输。

交换数据

连接建立后,后续 API 使用是对称的,因此不再区分广告客户和发现者。

现在,双方可以交换数据了。支持 3 种类型的载荷:

  • 字节:字节数组限制为 32k;这些数组非常适合发送元数据或控制消息等内容。
  • 文件:任意大小的文件;这些文件从应用传输到网络接口,在进程边界之间进行最少的复制。
  • :动态生成的数据流,例如录制的音频/视频,事先不知道最终大小。

接收者会收到有关新传入数据以及任何进度更新、取消或失败的通知。

建立的连接是全双工的,这意味着广告客户和发现者可以同时发送和接收数据。

数据收集

使用 Google Play 服务的 Nearby SDK 时,系统会收集使用情况分析数据,以改进体验。

  • 性能指标:使用 Nearby SDK 扫描和连接设备时,系统会收集发现和连接延迟时间、可靠性和吞吐量。
  • 设备信息:系统会收集设备型号、国家/地区、build 版本和应用软件包名称,并将其与性能指标相关联,以确定区域和设备特定的细分。

最终用户可以前往“设置”>“Google”>“使用情况和诊断信息”,允许或拒绝此数据收集。