【问题标题】:Why android Ibeacon need bluetooth permission?为什么 android Ibeacon 需要蓝牙权限?
【发布时间】:2021-12-10 08:29:05
【问题描述】:

我正在使用 android (org.altbeacon:android-beacon-library:2.19.3) 库提供 API 与 Beacon 交互

它需要位置和蓝牙权限。

权限要求:

https://altbeacon.github.io/android-beacon-library/requesting_permission.html

IOS的ibeacon不需要蓝牙权限,为什么android的ibeacon需要蓝牙权限?

有没有 android Ibeacon 的替代库

【问题讨论】:

    标签: android ibeacon ibeacon-android


    【解决方案1】:

    Android端的工作逻辑和ios端的工作逻辑是不一样的。在 Android 端,我们需要为与用户相关的每个操作获取权限。这是谷歌政策之一。为该位置开发了不同的库,但您需要以相同的方式添加权限。例如,您可以使用另一个包来定位:https://github.com/mrmans0n/smart-location-lib 或全部:https://android-arsenal.com/tag/55

    【讨论】:

      【解决方案2】:

      是的,Android 需要蓝牙权限才能扫描蓝牙信标,但 iOS 不需要相同的权限来检测 iBeacon。 无论您使用什么库,Android 都必须具有蓝牙权限才能扫描信标。这是操作系统平台限制。

      Android 需要此权限而 iOS 不需要此权限的原因是基于这两个平台如何演变的历史。几点:

      • 从 iOS 7 开始,蓝牙信标支持被添加到 CoreLocation API,它使用 Location 权限,而不是各种传感器(如 GPS、WiFi、蜂窝无线电和蓝牙)的单独权限,所有可用于定位目的。 Apple 显然做出了设计决定,将所有传感器置于单一权限之下。

      • 开源 Android 根本没有用于检测信标的内置 API——它只有蓝牙 API。 (Beacon API 由 Google Play Services add on 或开源 Android Beacon Library 提供)。所以在 Android 4.3 中添加蓝牙 LE 扫描时,它被视为必须在蓝牙权限之后的东西。。这些 API 恰好可以与 Apple 的 iBeacon 发明配合使用,但这些 API 并不是为定位而设计的。

      • 当Android在Android 6中添加运行时权限时,它试图通过将位置权限设置为运行时权限来保护用户的隐私,并进一步将蓝牙扫描置于相同的位置权限之后,以尝试在蓝牙权限之外保护隐私。

      • 在 iOS 上,蓝牙 LE API 确实需要蓝牙权限,并且Apple 对来自 iBeacon 的蓝牙功能进行了沙盒化。这样检测iBeacon必须获得Location权限,不需要蓝牙权限。另一方面,非 iBeacon 检测可以通过常规蓝牙许可进行,但 Apple 会过滤掉任何与 iBeacon 匹配的数据包。 Android 没有等效的沙盒,这是两个权限都需要的原因之一。

      需要注意的重要一点:Apple 不需要蓝牙权限来检测信标仅适用于 iBeacon 格式。如果您尝试检测 AltBeacon 或 Eddystone,您实际上确实需要蓝牙权限(而不是这些格式的位置权限。)这是一个“漏洞”,对于在某些情况下在 iOS 设备上避免额外权限很有用。

      最后一点:从 Android 12 开始,您可以使用新的 BLUETOOTH_SCAN 权限代替位置权限。这个想法是为了让 Android 不再需要位置权限来扫描常规蓝牙设备。但是有一个很大的问题:要使用这个新权限,您必须在 AndroidManifest.xml 中声明您的应用程序不使用蓝牙进行定位(例如信标),并且 Android 表示它会在这些情况下过滤掉一些扫描结果。他们没有明确说明,但这可能意味着他们会过滤掉任何与已知信标格式(如 iBeacon、AltBeacon 或 Eddystone)匹配的蓝牙数据包。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-04
        • 1970-01-01
        • 1970-01-01
        • 2014-10-24
        • 1970-01-01
        • 2023-02-10
        • 2013-09-01
        • 2021-11-26
        相关资源
        最近更新 更多