我和我的团队正在研究我们需要与用户iPhone上的应用交谈的信标。由于我们需要应用程序来检测信标并执行代码与我们的API交谈,即使遇害,我们也无法使用CoreBluetooth并需要作为信标进行操作。我们可以在iOS上检测到非iBeacon信标吗?
我们正试图在BCM20737S BLE模块上制作定制灯标。是否有可能将此自定义信标与iPhone上的应用程序作为信标进行对话? (CoreLocation框架)
谢谢!
我和我的团队正在研究我们需要与用户iPhone上的应用交谈的信标。由于我们需要应用程序来检测信标并执行代码与我们的API交谈,即使遇害,我们也无法使用CoreBluetooth并需要作为信标进行操作。我们可以在iOS上检测到非iBeacon信标吗?
我们正试图在BCM20737S BLE模块上制作定制灯标。是否有可能将此自定义信标与iPhone上的应用程序作为信标进行对话? (CoreLocation框架)
谢谢!
只要您的数据包使用iBeacon协议广播数据包,则corelocation就可以检测到它,并且您的应用将基于检测到该信号而被唤醒。一个iBeacon协议包是一个25字节的有效载荷集,作为BLE广告中的制造商数据字段。
这个堆栈线程可能对您有些用处。
What is the iBeacon Bluetooth Profile
但从本质corelocation只配置ibeacons,如果您想要传送youre去需要使用CoreBluetooth iOS上不同的协议报文,然后,一旦你收到数据包,它在某种程度上与使用翻译你的应用。
CoreLocation框架将仅检测iBeacons,这意味着符合iBeacon字节格式的信标。 你当然可以建立你自己的,虽然它不一定是苹果官方认证的iBeacon,但它必须匹配字节模式。这种模式在互联网上广泛使用,即使您没有注册获得Apple认证计划的权利,您也有权查看该规范。
但是,请注意不要改变字节模式。一些供应商已经建立了信标传输,将额外的字节发送到最后以发送电池电量。在检测到这些传输时,由于标题具有不同的长度字段,因此它们检测速度要慢得多,这与用于在后台快速检测的硬件过滤器不匹配。
如果您要自定义信标格式,则必须使用CoreBluetooth进行检测。我已经写了一些开源的iOS beacon tools帮助做到这一点,使用开源的AltBeacon和Eddystone-UID格式作为例子。尽管背景中的检测速度如您所说较慢,但您可以让信标尽快发送iBeacon信号(快速唤醒您的应用)和自定义信标信号(发送您想要的任何自定义字段)以便被检测到被唤醒。 即使您定义了自己的自定义信标格式,这种方式也可以快速检测。