使用Companion device pairing配对是否需要启用位置服务?
问题1:是否需要添加要求用户启用位置服务的逻辑
原生Android 12及以上版本中,使用Companion Device Pairing框架执行BLE扫描,确实不需要申请位置权限,也不需要开启位置服务。你遇到的小米Redmi Note 10 Pro(Android 11)的故障属于国产定制ROM的兼容特例:不少国内厂商在Android 11及更早版本的定制系统中,没有对齐原生CDM框架的权限逻辑,依旧保留了普通BLE扫描要求位置服务开启的限制,不属于原生系统的异常行为。
稳妥起见建议补充位置服务的兜底检测逻辑,避免大量特定机型用户出现扫描失败的问题。
问题2:如何区分需要开启位置服务的设备
不建议提前维护设备黑白名单做判断,机型迭代速度快,名单维护成本极高还容易出现遗漏,推荐使用超时降级的动态检测方案:
- 首次扫描时默认走原生CDM流程,不主动要求用户开启位置服务,设置10~15秒的合理扫描超时阈值
- 若触发扫描超时,再弹出提示告知用户当前设备可能需要开启位置服务才能完成配对,询问用户是否跳转系统设置开启
- 若用户开启位置服务后扫描成功,在本地缓存该设备的标记位,后续该设备启动扫描时提前检测位置服务状态即可,不需要重复走超时判断流程
额外适配提示:
针对Android 11及以下版本的国产ROM设备,可在扫描页添加非强制的弱提示,告知用户如果扫描失败可尝试开启位置服务,避免对无此限制的设备用户造成打扰。
内容的提问来源于stack exchange,提问作者douda
相关产品推荐
相关产品推荐

