我们可以在iOS上检测到非iBeacon信标吗?
我和我的团队正在制作一个灯塔,我们需要与用户iPhone上的应用程序进行通信。 由于我们需要应用程序来检测信标并执行代码以便在我们的API中进行通信,即使在被杀死时,我们也无法使用CoreBluetooth并且需要作为信标运行。
我们正试图在BCM20737S BLE模块上制作定制信标。 是否有可能将此自定义信标与iPhone上的应用程序对话作为信标? (CoreLocation框架)
谢谢!
只要您的数据包正在使用iBeacon协议广播数据包,就可以检测到它,并且您的应用程序将根据此信号的检测情况进行唤醒。 iBeacon协议分组是25字节有效载荷集,作为BLE通告中的制造商数据字段。
- 公司ID是2个字节(0x004C)
- 类型是1个字节(0x02)
- 数据长度为1个字节(0x015)
- Proximity UUID是一个16字节的hex字符串
- Major是2字节uint16_t
- Minor是2个字节uint16_t
- 测量功率为1字节int8_t
这个堆栈线程可能对你有用。
什么是iBeacon蓝牙配置文件
但基本上只有ibeacons的配置,如果你想传输一个不同的协议包,你需要在iOS上使用CoreBluetooth,然后一旦你收到数据包,翻译它以某种方式与你的应用程序一起使用。
CoreLocation框架仅检测iBeacons ,这意味着符合iBeacon字节格式的信标。 您当然可以构建自己的 ,虽然它不必是Apple认证的官方iBeacon,但它必须匹配字节模式。 这种模式可以在互联网上广泛使用,即使您没有注册Apple的认证计划,使您有权查看规范。
但是,请注意,不要对rhe字节模式进行任何更改 。 一些供应商已经构建了信标传输,可以在末端添加额外的字节以发送电池电量。 虽然检测到这些传输,但是它们的检测速度要慢得多,因为标头具有不同的长度字段,这与用于在后台快速检测的硬件filter不匹配。
如果要自定义信标格式,则必须使用CoreBluetooth进行检测 。 我已经编写了一些开源iOS信标工具来帮助实现这一点,使用开源AltBeacon和Eddystone-UID格式作为示例。 虽然你所说的背景中的检测速度较慢,但你可以让你的信标传输iBeacon信号(快速唤醒你的应用程序)和自定义信标信号(发送你想要的任何自定义字段)。被唤醒了。 这样即使您定义自己的自定义信标格式,也可以快速检测到。