我们能否像监控信标(进入区域、退出区域)一样监控 BLE 服务?

Can we monitor BLE service the same way as we monitor beacon (enter region, exit region)?

我正在努力思考常规 BLE 服务和 Beacon 之间的区别。基于此 BLE 信标帧只是 BLE 广告帧内的专用负载。 iOS 和 Android 都允许我们监控我们是否进入或退出信标区域。是否可以为 BLE 服务做同样的事情?

简短的回答是是的,您可以以类似的方式使用 BLE 服务来监控信标。但也有缺点:

术语 BLE 服务更准确地称为蓝牙 LE GATT 服务。这比蓝牙 LE 信标使用的独立蓝牙 LE 广告要复杂得多。

要使用蓝牙 LE 信标:

  1. Bluetooth LE 设备通过固定的字节序列发布 Bluetooth LE 广告,这些字节唯一地标识信标,通常以 1Hz 到 10HZ 之间的速率发送一个数据包。

  2. Mobile phones 通过低功耗蓝牙扫描侦听低功耗蓝牙广告。

  3. 手机 phone 使用信标 SDK(例如 iOS 上的 CoreBluetooth 和 Android 上的 Android Beacon 库或其他)来转换appearances/disappearances 的广告扫描到 "enter region" 和 "exit region" 事件中。信标标识符嵌入在广告中,并由 SDK 通过这些事件传递。

要使用蓝牙 LE GATT 服务,步骤 1 和 2 与上述相同。但事情变得更加复杂:

  1. 移动设备上的软件phone 与蓝牙 LE 设备建立连接。
  2. 移动设备上的软件phone 查询蓝牙 LE 设备以获得 GATT 服务
  3. 移动设备上的软件phone 查询蓝牙 LE 设备以获得感兴趣的特定 GATT 服务支持的 GATT 特性
  4. 移动设备上的软件 phone 读取 GATT 特性的值,这将 return 存储在蓝牙 LE 设备中的值。对于类似信标的用例,此特性通常会存储信标标识符,就像在传统蓝牙 LE 信标的情况下嵌入广告本身一样。
  5. 自定义软件根据嵌入在 GATT 特征中的标识符将此托管蓝牙 LE GATT 服务的设备的 appearance/disappearance 转换为 enter/exit 区域事件。

使用上述技术,您当然可以使用像信标这样的低功耗蓝牙服务。但它要复杂得多 并且需要定制软件来处理它。这就是为什么使用不使用服务的更标准方法更为常见。