我正在创建一个不遵循Apples iBeacon规范的BLE Beacon。原因是“灯塔”将是一个arduino设备,应用程序也应该能够沟通并指示它执行操作。这在iOS上支持吗?我听说iOS 8的传言通过蓝牙锁定了通用设备广告。在iOS中使用通用BLE信标?
在此先感谢。
我正在创建一个不遵循Apples iBeacon规范的BLE Beacon。原因是“灯塔”将是一个arduino设备,应用程序也应该能够沟通并指示它执行操作。这在iOS上支持吗?我听说iOS 8的传言通过蓝牙锁定了通用设备广告。在iOS中使用通用BLE信标?
在此先感谢。
是的,您可以使用CoreBluetooth
API来做到这一点,但根据您使用的是哪种类型的蓝牙LE广告,存在一些限制。
1.厂商广告
您可以阅读使用CoreBluetooth
制造商广告(最多24个字节)的所有字节,但只有当应用程序在前台。在后台,你将不会有任何回调。这通常与第二个iBeacon广告搭配,可以在iOS的后台将应用程序唤醒。对于这种类型的广告的一个例子,请参见AltBeacon specification.
2. GATT服务广告
甲GATT服务广告检测将由CoreBluetooth
被发送到一个应用程序,即使应用在后台,提供该应用程序专门寻找信标的GATT服务UUID。这种方法的缺点是数据有效载荷通常仅限于2字节服务UUID之后的18个字节。
其他信息
在这两种广告类型的情况下,可以连接到使用关贸总协定的设备,读取和写入数据。但请注意,一旦连接设备,通常会停止发布广告作为灯塔。
上述两项工作都与iOS 8中描述的一致。很难预测未来,但Apple似乎不太可能锁定上述两种用例,因为它们广泛用于除信标之外的蓝牙LE应用程序。
您可以在this blog post中看到阅读这些广告的基本步骤。虽然这篇文章是专门介绍Apple如何过滤出iBeacon广告,但如果您制作自己的定制制造商广告,它将允许您按照文章所述读取字节。
为了完整起见,上述两种广告类型均可由Android设备在前景和背景中选取。
问题,这些解决方案不要求CoreBluetooth有扫描模式吗? – rclai 2016-01-20 16:14:00