繁体   English   中英

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

[英]Can we detect non-iBeacon beacons on iOS?

我和我的团队正在研究一个信标,我们需要与用户iPhone上的应用进行对话。 由于我们需要该应用程序检测信标并执行代码以与我们的API进行通信(即使被杀死),因此我们无法使用CoreBluetooth,而需要作为信标进行操作。

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

谢谢!

只要您的数据包正在广播使用iBeacon协议的数据包,那么corelocation都可以检测到它,并且您的应用程序将基于对该信号的检测而唤醒。 iBeacon协议数据包是一个25字节的有效负载,设置为BLE广告中的制造商数据字段。

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

该堆栈线程可能对您有用。

什么是iBeacon蓝牙配置文件

但本质上,corelocation仅针对ibeacons配置,如果您要传输其他协议数据包,则需要在iOS上使用CoreBluetooth,那么一旦收到该数据包,请以某种方式对其进行转换以用于您的应用程序。

CoreLocation框架将仅检测iBeacons ,这意味着满足iBeacon字节格式的信标。 您当然可以构建自己的 ,虽然它不必是经过Apple官方认证的iBeacon,但是必须与字节模式匹配。 即使您没有注册获得使您有权查看规格的Apple认证计划,这种模式也可以在Internet上广泛使用。

但是请注意,不要对rhe byte pattern进行任何更改 一些供应商已经建立了信标传输,将额外的字节附加到末尾以发送电池电量。 在检测到这些传输的同时,由于标头具有不同的长度字段,因此检测到它们的速度要慢得多,该字段与后台用于快速检测的硬件过滤器不匹配。

如果要自定义信标格式,则必须使用CoreBluetooth进行检测 我已经使用开源AltBeacon和Eddystone-UID格式作为示例,编写了一些开源的iOS信标工具来帮助实现这一目标。 尽管后台检测的速度较慢,但​​是您可以让信标既发送iBeacon信号(以快速唤醒应用程序),也发送自定义信标信号(以发送所需的任何自定义字段),以便尽快对其进行检测。醒了。 这样,即使您定义自己的自定义信标格式,也可以快速检测到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM