扫描BLE设备的位置要求

5

自Marshmallow(Android 6.0)以后,进行BLE扫描需要开启设备位置权限。从技术上讲,我并不清楚为什么只有开启位置权限才能进行BLE设备的扫描。请问Google这样做的原因是什么?


相关链接:https://dev59.com/iFwY5IYBdhLWcg3wEEV2 和 https://code.google.com/p/android/issues/detail?id=189090 以及 https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id - Morrison Chang
谢谢@MorrisonChang!我已经仔细阅读了这些讨论帖。 - Avinash Gupta
1个回答

5

问:为什么谷歌会这样做?

答:因为使用BLE扫描通常是用来确定用户在使用蓝牙LE信标时的位置。

当这个变化还没有发布时,我曾在2015年的Google I/O问答环节中与谷歌工程师讨论过这个问题。当时,我的担忧是需要请求蓝牙LE管理权限才能扫描位置信标。对我来说,这是一个问题,因为用户理解我的应用程序需要找到用户的位置,但不理解为什么需要管理蓝牙。

工程师的回答是,在Android M中需要位置权限(和打开位置)才能做到这一点,这样可以使用户更清楚地了解需要这样做的原因。不幸的是,从我的角度来看,由于历史原因,仍然需要蓝牙管理权限。

你可以持不同意见,不过推理是很明确的。如果一个应用程序可以扫描蓝牙设备并读取它们的MAC地址或其他标识符,那么如果应用程序开发人员知道其中一些已扫描设备的位置,它也可以确定用户的位置。

为什么相同的位置权限逻辑不适用于扫描WiFi或蓝牙Classic(两者都可以实现同样的功能)尚不清楚。也许只是因为谷歌正在准备使用其Eddystone标准加入蓝牙LE信标游戏。

更正:需要WiFi扫描的位置权限。


我找到了这个:为了通过蓝牙和Wi-Fi扫描访问附近外部设备的硬件标识符,您的应用程序现在必须具有ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION权限。 - Avinash Gupta
1
这是以上声明的链接:https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html 这意味着相同的权限逻辑也适用于WiFi扫描。我的感觉是,对于这种用例,用户很难解释需要位置和蓝牙两者的要求。最初用户会撤销其中的任何一个权限。此外,由于应用程序开发人员已经安装了自己的设备来跟踪用户的位置,因此利用它们是有意义的。 - Avinash Gupta
1
我完全同意您的观点,认为这是Google在追求他们的信标游戏。事实上,我相信Google计划了解开发者安装的每一个信标,并将它们用于自己的利益(跨其产品链)。就像我们开发者为Google的精细定位跟踪项目工作一样。 - Avinash Gupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接