【问题标题】:How estimote/kontakt identify a specific beacon?estimote/kontakt 如何识别特定的信标?
【发布时间】:2019-03-23 05:28:46
【问题描述】:

我在 iOS 上使用 iBeacon,我试图识别每个信标,以便根据每个信标附加一些信息,例如,我试图从 MAC 地址甚至信标名称获取位置。

我不能使用核心位置库,因为它只给我提供了主要和次要的 Proximity UUID,我需要一些东西来告诉我我扫描了哪个信标。

所以,我切换到核心蓝牙库,但在那里我无法检索 iBeacon 广告数据包,如果扫描的 BLE 正在使用 iBeacon 协议,iOS 会隐藏它。

问题是,例如,Estimote 如何识别他们的信标? 我怎样才能得到广告包?我想像在 Android 中一样读取每个字节并获取信息。

【问题讨论】:

    标签: ios core-location ibeacon core-bluetooth beacon


    【解决方案1】:

    不幸的是,您根本无法使用公共 API 执行此操作。 CoreLocation 仅提供 ProximityUUID,major 和 minor。 CoreBluetooth 阻止访问前导码与 iBeacon 前缀匹配的任何数据包的原始字节。这两个 API 都不会显示蓝牙 MAC。

    Beacon 制造商通常会构建使用单独的专有蓝牙 GATT 配置服务的配置应用程序。信标可以使用此专有服务与手机进行双向连接并交换数据字段,告诉您包括蓝牙 MAC 在内的所有标识符。不幸的是,除非您从制造商那里获得规格或使用蓝牙数据包嗅探器对其进行逆向工程,否则您可能无法使用此类私有专有配置服务。

    【讨论】:

    • 感谢您的快速回复。你有什么建议?我只需要访问广告包,切换到 Eddystone 或 Alt-Beacon 就可以了?
    • 还有我们可以查看的示例应用程序吗?
    • 如果您切换到 AltBeacon,您可以使用 CoreBluetooth 访问原始字节。但它只能在前台检测到。如果您切换到 Eddystone,您还可以使用 CoreBluetooth 检测字节,并且可以在前景和背景中检测到 - 但背景检测不如使用 iBeacon 快。有关在 iOS 上执行此操作的代码,请参见此处:github.com/AltBeacon/ios-beacon-tools
    • 附近的通知怎么样,如果我使用 Eddystone/AltBeacon 我将能够唤醒应用程序并显示通知?
    • 在 iOS 上,您不能使用 AltBeacon 唤醒应用程序,因为应用程序必须处于前台才能获取有关 BLE 制造商广告的操作系统回调。 Eddystone 使用 BLE 服务广告,这将允许在检测时唤醒。这允许您在检测到 Eddystone 信标时发送通知。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    相关资源
    最近更新 更多