我们可以在iOS上检测到非iBeacon信标吗?

时间:2016-03-10 21:46:10

标签: ios ibeacon iot bluetooth-lowenergy

我和我的团队正在制作一个灯塔,我们需要与用户的iPhone上的应用交谈。由于我们需要应用程序来检测信标并执行代码以便在我们的API中进行通信,即使在被杀死时,我们也无法使用CoreBluetooth并且需要作为信标运行。

我们正试图在BCM20737S BLE模块上制作自定义信标。是否可以将此自定义信标与iPhone上的应用程序对话作为信标? (CoreLocation框架)

谢谢!

2 个答案:

答案 0 :(得分:1)

只要您的数据包正在使用iBeacon协议广播数据包,就可以检测到它,并且您的应用将根据此信号的检测情况进行唤醒。 iBeacon协议包是一个25字节的有效载荷,设置为BLE广告中的制造商数据字段。

  1. 公司ID为2字节(0x004C)
  2. 类型为1字节(0x02)
  3. 数据长度为1个字节(0x015)
  4. Proximity UUID是一个16字节的十六进制字符串
  5. Major是2字节uint16_t
  6. Minor是2个字节uint16_t
  7. 测量功率为1字节int8_t
  8. 这个堆栈线程可能对您有用。

    What is the iBeacon Bluetooth Profile

    但基本上只有ibeacons的配置,如果你想传输一个不同的协议包你需要在iOS上使用CoreBluetooth,那么一旦收到数据包,就可以用它来翻译它以便与你的app一起使用。

答案 1 :(得分:1)

CoreLocation框架只会检测iBeacons ,这意味着符合iBeacon字节格式的信标。 您当然可以构建自己的,虽然它不一定是Apple认证的官方iBeacon,但它必须匹配字节模式。这种模式可以在互联网上广泛使用,即使您没有注册Apple的认证计划,也可以使您获得查看规范的权利。

但是,请注意,不要对rhe字节模式进行任何更改。一些供应商已经构建了信标传输,可以在末端添加额外的字节以发送电池电量。虽然检测到这些传输,但检测到它们的速度要慢得多,因为标头具有不同的长度字段,这与用于在后台快速检测的硬件过滤器不匹配。

如果要自定义信标格式,则必须使用CoreBluetooth进行检测。我已经编写了一些开源iOS beacon tools来帮助实现这一点,使用开源的AltBeacon和Eddystone-UID格式作为示例。虽然你所说的背景中的检测速度较慢,但​​你可以让你的信标传输iBeacon信号(快速唤醒你的应用程序)和自定义信标信号(发送你想要的任何自定义字段),一旦它被检测到被唤醒了。 这样即使您定义了自己的自定义信标格式,也可以快速检测到。