2016-03-10 40 views
1

我和我的团队正在研究我们需要与用户iPhone上的应用交谈的信标。由于我们需要应用程序来检测信标并执行代码与我们的API交谈,即使遇害,我们也无法使用CoreBluetooth并需要作为信标进行操作。我们可以在iOS上检测到非iBeacon信标吗?

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

谢谢!

回答

1

只要您的数据包使用iBeacon协议广播数据包,则corelocation就可以检测到它,并且您的应用将基于检测到该信号而被唤醒。一个iBeacon协议包是一个25字节的有效载荷集,作为BLE广告中的制造商数据字段。

  1. 公司ID为2个字节(0x004C)
  2. 类型是1个字节(0×02)
  3. 数据长度为1个字节(0x015)
  4. 接近UUID是一个16字节的十六进制字符串
  5. 主要为2个字节uint16_t
  6. 次要为2个字节uint16_t
  7. 测量的功率是1个字节中int8_t

这个堆栈线程可能对您有些用处。

What is the iBeacon Bluetooth Profile

但从本质corelocation只配置ibeacons,如果您想要传送youre去需要使用CoreBluetooth iOS上不同的协议报文,然后,一旦你收到数据包,它在某种程度上与使用翻译你的应用。

1

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

但是,请注意不要改变字节模式。一些供应商已经建立了信标传输,将额外的字节发送到最后以发送电池电量。在检测到这些传输时,由于标题具有不同的长度字段,因此它们检测速度要慢得多,这与用于在后台快速检测的硬件过滤器不匹配。

如果您要自定义信标格式,则必须使用CoreBluetooth进行检测。我已经写了一些开源的iOS beacon tools帮助做到这一点,使用开源的AltBeacon和Eddystone-UID格式作为例子。尽管背景中的检测速度如您所说较慢,但您可以让信标尽快发送iBeacon信号(快速唤醒您的应用)和自定义信标信号(发送您想要的任何自定义字段)以便被检测到被唤醒。 即使您定义了自己的自定义信标格式,这种方式也可以快速检测。

相关问题