ios - 在 iOS 上使用通用 BLE 信标?

标签 ios bluetooth bluetooth-lowenergy core-bluetooth ibeacon

我正在寻求创建一个不遵循 Apple iBeacon 规范的 BLE Beacon。原因是“信标”将是一个 arduino 设备,应用程序也应该能够与其通信以指示它执行操作。 iOS 支持此功能吗?我听说过有关 iOS 8 锁定通过蓝牙进行通用设备广告的传言。

提前致谢。

最佳答案

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

<强>1。制造商广告

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

<强>2。 GATT 服务广告

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

其他细节

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

上述两种情况都与 iOS 8 中描述的一样。很难预测 future ,但 Apple 似乎不太可能锁定上述两种用例,因为除了信标之外,它们还广泛用于蓝牙 LE 应用程序。

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

为了完整起见,Android 设备在前台和后台均可获取上述两种广告类型。

关于ios - 在 iOS 上使用通用 BLE 信标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29459065/

相关文章:

ios - 如何将 iPhone 音频路由到蓝牙扬声器

iphone - 使用私有(private) iOS BluetoothManager 框架进行设备配对

Android 10 不支持 BLE 蓝牙扫描

ios - UIActivityIndi​​catorView 没有在正确的时间停止

ios - Xcode无法运行iOS模拟器

ios - 快速键盘听不到输入声音

ios - 如何在 IOS Swift 中获取 Core 数据中的一对多关系?

无需用户使用 Android API 输入 PIN 和确认的 Android 蓝牙配对

bluetooth-lowenergy - 蓝牙 LE 的最大数据包长度?

android - 在 Android 中为低功耗蓝牙实现互联网协议(protocol)支持配置文件 (IPSP)