【问题标题】:Using generic BLE beacons with iOS?在 iOS 中使用通用 BLE 信标?
【发布时间】:2015-06-10 03:07:19
【问题描述】:

我希望创建一个不遵循 Apples iBeacon 规范的 BLE Beacon。原因是“信标”将是一个 arduino 设备,应用程序也应该能够与之通信以指示它做事。这在 iOS 上是否支持?我听说 iOS 8 锁定了通过蓝牙进行通用设备广告的传言。

提前致谢。

【问题讨论】:

    标签: ios bluetooth bluetooth-lowenergy core-bluetooth ibeacon


    【解决方案1】:

    是的,您可以使用CoreBluetooth API 执行此操作,但根据您使用的蓝牙 LE 广告类型,有一些限制。

    1.制造商广告

    您可以使用CoreBluetooth 读取制造商广告的所有字节(最多 24 个字节),但仅当应用程序位于前台时。在后台,您不会收到任何回调。这通常与第二个 iBeacon 广告配对,该广告在 iOS 的后台唤醒应用程序。有关此类广告的示例,请参阅AltBeacon specification.

    2。 GATT 服务广告

    GATT 服务广告检测将通过CoreBluetooth 发送到应用程序,即使应用程序在后台,只要应用程序专门寻找信标的 GATT 服务 UUID。这种方式的缺点是数据负载一般被限制在 2 字节的服务 UUID 之后只有 18 字节。

    其他详情

    在这两种广告类型的情况下,您都可以使用 GATT 连接到设备,并读取和写入数据。但是请注意,一旦您连接设备,通常会停止作为信标进行广告。

    上述两种情况都如在 iOS 8 中所描述的那样工作。很难预测未来,但苹果似乎不太可能锁定上述两个用例,因为它们广泛用于除 Beacons 之外的蓝牙 LE 应用程序。

    您可以在this blog post 中查看阅读这些广告的基本步骤。虽然该帖子专门介绍了 Apple 如何过滤 iBeacon 广告,但如果您制作自己的自定义制造商广告,它将允许您读取帖子中描述的字节。

    为了完整起见,以上两种广告类型都可以被Android设备在前台和后台拾取。

    【讨论】:

    • 问题,这些解决方案不需要CoreBluetooth开启扫描模式吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多