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

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

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

谢谢!

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

  1. 公司ID是2个字节(0x004C)
  2. 类型是1个字节(0x02)
  3. 数据长度为1个字节(0x015)
  4. Proximity UUID是一个16字节的hex字符串
  5. Major是2字节uint16_t
  6. Minor是2个字节uint16_t
  7. 测量功率为1字节int8_t

这个堆栈线程可能对你有用。

什么是iBeacon蓝牙配置文件

但基本上只有ibeacons的配置,如果你想传输一个不同的协议包,你需要在iOS上使用CoreBluetooth,然后一旦你收到数据包,翻译它以某种方式与你的应用程序一起使用。

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

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

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