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”>“使用情况和诊断信息”来允许或拒绝此收集。