【发布时间】:2015-06-10 03:07:19
【问题描述】:
我希望创建一个不遵循 Apples iBeacon 规范的 BLE Beacon。原因是“信标”将是一个 arduino 设备,应用程序也应该能够与之通信以指示它做事。这在 iOS 上是否支持?我听说 iOS 8 锁定了通过蓝牙进行通用设备广告的传言。
提前致谢。
【问题讨论】:
标签: ios bluetooth bluetooth-lowenergy core-bluetooth ibeacon
我希望创建一个不遵循 Apples iBeacon 规范的 BLE Beacon。原因是“信标”将是一个 arduino 设备,应用程序也应该能够与之通信以指示它做事。这在 iOS 上是否支持?我听说 iOS 8 锁定了通过蓝牙进行通用设备广告的传言。
提前致谢。
【问题讨论】:
标签: ios bluetooth bluetooth-lowenergy core-bluetooth ibeacon
是的,您可以使用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设备在前台和后台拾取。
【讨论】: