扫描 BLE 设备的位置要求
Location requirement to scan for BLE devices
从 Marshmallow 开始,BLE 扫描与设备开启位置的要求存在显着差异。从技术上讲,我没有看到扫描 BLE 设备需要位置的正当理由。 Google 为什么要这样做?
问:为什么 Google 这样做了?
答:因为 BLE 扫描通常用于通过蓝牙 LE 信标确定用户的位置。
我在 Google I/O 2015 年的问答环节中与 Google 工程师讨论了这个问题,当时更改仍未发布。当时,我担心的是必须请求蓝牙 LE 管理员权限才能扫描位置信标。对我来说,这是个问题,因为用户知道我的应用程序需要找到用户的位置,但不明白为什么它需要管理蓝牙。
工程师的回应是,在 Android M 中需要位置权限(和位置)才能让用户更清楚这一点。不幸的是,从我的角度来看,由于历史原因仍然需要蓝牙管理员权限。
你当然可以不同意Google的决定。但道理很清楚。如果一个应用程序可以扫描蓝牙设备并可以读取它们的 MAC 地址或其他标识符,如果应用程序开发人员知道其中一些扫描设备的位置,它还可以确定用户的位置。
为什么相同的位置权限逻辑不适用于扫描 WiFi 或蓝牙经典(两者都允许相同的事情)还不太清楚。 也许只是 Google 正准备使用他们的 Eddystone 标准加入蓝牙 LE 信标游戏。
更正:WiFi 扫描需要位置许可。
从 Marshmallow 开始,BLE 扫描与设备开启位置的要求存在显着差异。从技术上讲,我没有看到扫描 BLE 设备需要位置的正当理由。 Google 为什么要这样做?
问:为什么 Google 这样做了?
答:因为 BLE 扫描通常用于通过蓝牙 LE 信标确定用户的位置。
我在 Google I/O 2015 年的问答环节中与 Google 工程师讨论了这个问题,当时更改仍未发布。当时,我担心的是必须请求蓝牙 LE 管理员权限才能扫描位置信标。对我来说,这是个问题,因为用户知道我的应用程序需要找到用户的位置,但不明白为什么它需要管理蓝牙。
工程师的回应是,在 Android M 中需要位置权限(和位置)才能让用户更清楚这一点。不幸的是,从我的角度来看,由于历史原因仍然需要蓝牙管理员权限。
你当然可以不同意Google的决定。但道理很清楚。如果一个应用程序可以扫描蓝牙设备并可以读取它们的 MAC 地址或其他标识符,如果应用程序开发人员知道其中一些扫描设备的位置,它还可以确定用户的位置。
为什么相同的位置权限逻辑不适用于扫描 WiFi 或蓝牙经典(两者都允许相同的事情)还不太清楚。 也许只是 Google 正准备使用他们的 Eddystone 标准加入蓝牙 LE 信标游戏。
更正:WiFi 扫描需要位置许可。