Web Bluetooth 权限、设备选择与隐私
了解 Web Bluetooth 的用户激活、权限、可用性和设备选择如何影响隐私友好的网页体验。
Web Bluetooth 允许网页应用在用户选择并授予访问权后,与低功耗蓝牙设备通信。它是由用户介导的能力,并不是查看附近硬件的通道。可靠的设计从可用页面开始,在明确的用户操作中发起请求,并把拒绝、取消、蓝牙不可用和断开视为正常结果。用户选择的设备不能证明所有权、位置或浏览器使用者身份。
同样的范围约束有助于统一支持说明:浏览器只为当前任务授予访问权,用户可以停止访问,即使能力缺失,页面仍应可用。
Web Bluetooth 的用途
Web Bluetooth 规范定义了网页访问低功耗蓝牙服务的方式。浏览器负责调解访问,只暴露请求和平台允许的设备与服务。这个 API 不是附近设备目录,应用不应把设备名称、标识符或服务当作用户身份信号。
MDN 的 Web Bluetooth API 参考介绍了公开接口。产品需求应从用户可见的结果开始:配置用户允许的配件、读取用户请求的值,或更新所选设备的设置。即使无法完成,也要保留核心页面和等价的非蓝牙路径。
用户激活、选择器与权限
Web Bluetooth 访问应跟随明确的用户手势,例如按下连接按钮。请求必须运行在安全上下文中,并可能要求瞬时用户激活;在页面加载、无关定时器或激活已过期后调用都可能失败。浏览器选择器让用户选择设备,权限结果说明当前来源可以访问什么。取消选择器或拒绝权限是用户决定,不是设备身份异常。
在按按钮前说明连接用途。不要把请求伪装成导航,也不要在取消后反复打开选择器,更不要要求用户削弱隐私控制。浏览器拒绝请求时保留已填写的数据,并显示普通页面;只有重试有意义时才提供再次尝试。Chrome Web Bluetooth 指南说明了特定浏览器的预期,并不代表所有浏览器和操作系统都支持。
权限受浏览器和来源策略限制,授权也不保证设备持续可达。设备可能超出范围、断电、断开或无法被操作系统使用。把连接丢失作为可恢复状态,设置有限重试和非蓝牙回退。不要把拒绝或断开解释为用户或设备所有者的属性。
可用性是兼容性分支
Web Bluetooth 的支持取决于浏览器、操作系统、安全上下文、平台蓝牙栈、管理策略和设备能力。navigator.bluetooth 可能不存在,请求可能拒绝,后续连接也可能失败。API 不保证每个浏览器提供相同选择器、权限、服务或事件。进行能力检测并记录已测试环境,不要承诺某个浏览器系列必然支持。
可用性也会在页面打开期间变化。适配器可能丢失,设备可能不可用,管理员也可能禁用功能。把控件和状态放在普通 HTML 中,即使没有连接,任务仍然可理解。浏览器权限隐私指南说明了权限结果不是稳定身份属性。
不要用蓝牙可用性控制登录、计费、账户恢复或必需内容。若配件是可选增强,让用户用本地表单、手工输入、文件导入或其他支持的表达继续。连接尝试应明确、重试应有限;API 缺失不应造成无限提示循环。
最小化设备与服务数据
一次任务选择的设备关系应保持短期,除非用户明确要求记住。只保存恢复任务所需的最少状态,例如用户选择的显示名称或限定范围的权限状态。默认不要把原始设备标识符、名称、服务列表、特征值或连接历史复制到账户档案、网址、分析标签或支持记录。
设备关系不是所有权、位置、健康或身份的证明。不要把蓝牙细节与账户、网络、字体、存储或时间信号组合成画像。若支持确实需要诊断值,应说明目的、限制访问、设定短保留期并在案件结束时删除。检查 SDK、错误报告器、服务工作者和缓存,避免本应留在本地的值被序列化到远程事件。
把本地通信与可选上传或同步分开。读取所选配件的值并不授权把它发送到服务。说明哪些数据会离开浏览器,必要时请求单独选择;用户拒绝时仍保持本地任务可用。对运营来说,connected、denied 或 fallback 这类结果通常比持久设备清单更有用。
构建并测试回退
测试 API 缺失、脱离用户激活的请求、选择器取消、权限拒绝、蓝牙不可用、设备断开、缺少必需服务和再次连接。每种情况都应到达有消息、下一步和已保留数据的已知状态。测试不应依赖特定设备标识符、名称、无线电或距离。
连接、断开、重试和忘记控件要可用键盘访问且标签清晰。用文本播报状态变化,保留焦点,并在无蓝牙时提供相同的核心数据。静态值、手工输入或可下载配置都可以作为增强功能的等价回退。尊重减少动态效果偏好,不要把失败藏在动画中。
只有可能暂时失败时才进行一次有限重试。用户取消后不要在没有新操作时再次提示,拒绝也不能触发循环。记录产品结果和失败阶段,而不是设备清单。修改兼容性或权限声明前,重新核对 W3C Web Bluetooth 规范与当前浏览器文档。
另请参阅日常浏览器隐私指南,了解更广泛的数据最小化决策。
连接前说明任务,连接中保持页面稳定,断开后保留已填写数据。权限只允许技术连接,不自动授权分析、账户关联或远程存储。数据离开浏览器前说明用途并请求单独选择,拒绝也应是完整结果。校验设备值的类型、单位、新鲜度和范围,错误时提供可理解的回退。允许用户修改、断开和忘记记住的偏好,不把旧授权称为设备可信。状态消息应告诉用户重试、手工输入、继续草稿或联系支持。管理策略可能禁用蓝牙,应提供替代路径而不是要求改变安全设置。成功连接不等于证明物理位置,无线范围和系统状态都会影响结果。选择器打开和关闭时保持焦点,连接状态要用文本宣布。没有无线硬件的人也应能完成核心任务,回退内容要有相同信息。自动化测试使用受控夹具,验证结果、焦点、数据和最小运营事件。每次集成变更都检查 SDK、错误报告、缓存和序列化路径。本地读取与上传是不同步骤,远程错误不应重新请求浏览器权限。
兼容性声明应窄于证据:权限可能被撤销,平台策略可能禁用蓝牙,未来版本也可能改变可用性。记录已测试环境,并在每种情况下保留可用的替代路径。
权限不等于分析或上传同意。
设备值需要应用层校验。
用户应能忘记保存的关系。
状态消息应给出下一步。
管理策略需要尊重。
连接不是位置证明。
选择器前后要保持焦点。
核心流程应支持无蓝牙路径。
测试使用受控设备。
集成变更后检查数据流。
页面从暂停状态恢复、策略发生变化或用户改选配件时,应重新计算本地决定,解释新的限制并保持普通任务可用。不要把临时观察变成账户的永久标签。