Nearby Connections 是一种点对点网络 API,可供应用实时发现、连接附近的设备并与之交换数据,无论网络连接情况如何。
一些示例用例:
- 协作白板:与附近的参与者在共享虚拟白板上记下想法。
- 本地多人游戏:设置多人游戏并邀请附近的其他用户加入。
- 跨屏游戏:使用手机或平板电脑作为游戏控制器在附近的大屏幕 Android 设备(如 Android TV)上玩的游戏。
- 离线文件传输:快速分享照片、视频或任何类型的数据,而无需网络连接。
简介
借助 Nearby Connections,您能够以完全离线的点对点方式在附近的设备之间通告、发现和连接。设备之间的连接是高带宽、低延迟且完全加密,以实现快速、安全的数据传输。
此 API 的主要目标是提供一个简单、可靠且高效的平台。在后台,API 结合使用了蓝牙、BLE 和 Wi-Fi 技术,利用了它们各自的优势,同时规避了其各自的弱点。这样可以有效地抽象化蓝牙和 Wi-Fi 在各种平台和操作系统版本中的变化,让开发者能够专注于对其用户至关重要的功能。
API 概览
该 API 的使用分为两个阶段:连接前和连接后。
在关联阶段,广告主会自行投放广告,而发现程序会发现附近的广告主并发送连接请求。从探索器到广告客户的连接请求会启动对称身份验证流程,使双方独立接受(或拒绝)连接请求。
在双方接受连接请求之后,系统会认为连接已建立,设备会进入连接后阶段,届时双方都可以交换数据。
广告和发现
其他发现者将看到广告客户,当发现新的广告客户或广告客户丢失时,广告客户将会收到通知。
建立连接
当发现器希望连接到附近的广告客户时,可以请求连接。
双方将收到连接启动流程的通知,并且有机会接受或拒绝连接。
双方都回复后,双方将收到结果通知。如果双方接受连接,连接就会被视为已建立,然后可以开始传输数据。
交换数据
建立连接后,进一步的 API 用量是对称的,因此广告客户与 Google 探索器之间不再有区别。
双方现在都可以交换数据。支持的载荷类型有 3 种:
- 字节:字节数组限制为 32k;这适用于发送元数据或控制消息等内容。
- 文件:任何大小的文件;这些文件都可以从应用传输到网络接口,而无需跨进程边界复制。
- 流式:实时生成的数据流,与录制的音频/视频相同,事先已知的最终大小。
接收器将收到有关新传入数据以及任何进度更新、取消或失败的通知。
建立的连接是全双工的,这意味着广告主和探索器可以同时发送和接收数据。
数据收集
使用 Google Play 服务 Nearby SDK 时,系统会收集使用情况分析以改善体验。
- 性能指标:在使用 Nearby SDK 扫描并连接到设备时,系统会收集发现和连接延迟时间、可靠性和吞吐量。
- 设备信息:系统会收集设备型号、国家/地区、build 版本和应用软件包名称并将其与性能指标相关联,以确定区域和设备专用切片。
最终用户可以通过依次转到“设置”>“Google”>“使用情况和诊断信息”来允许或拒绝此集合。