在iOS上使用通用BLE信标?

时间:2015-04-05 15:46:36

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

我希望创建一个不遵循Apples iBeacon规范的BLE Beacon。原因是"信标"将是一个arduino设备,应用程序也应该能够通信,以指示它做的事情。 iOS上是否支持此功能?我听说有关iOS 8通过蓝牙锁定通用设备广告的传闻。

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

<强> 1。制造商广告

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

<强> 2。关贸总协定服务广告

即使应用程序在后台,GATT服务广告检测也将由CoreBluetooth发送到应用程序,前提是应用程序专门查找信标的GATT服务UUID。这种方法的缺点是数据有效载荷通常仅限于2字节服务UUID之后的18个字节。

其他详情

对于两种广告类型,您可以使用GATT连接到设备,以及读取和写入数据。但请注意,一旦连接设备,通常会停止将广告作为信标。

上述两项工作都与iOS 8相同。很难预测未来,但苹果似乎不太可能锁定上述两个用例,因为它们被广泛用于蓝牙LE应用程序来自Beacons。

您可以在this blog post中查看阅读这些广告的基本步骤。虽然这篇文章特别关注Apple如何过滤出iBeacon广告,但如果您制作自己的自定义制造商广告,它将允许您按照帖子中的描述读取字节。

为了完整起见,上述两种广告类型都可以由前景和后台的Android设备选取。