我正在iOS上使用iBeacon,我试图识别每个信标,以便根据每个信标附加一些信息,例如,我试图从MAC地址甚至信标名称中获取位置。
我不能使用Core Location Library,因为它只给我提供主要和次要的Proximity UUID,我需要一些信息来告诉我扫描了哪个信标。
因此,我切换到了Core Bluetooth Library,但是在这里我无法检索iBeacon广告包,如果Scanned BLE在iBeacon协议上工作,iOS会将其隐藏。
问题是,例如Estimote如何识别其信标? 如何获得广告包?我想读取每个字节,并像在Android中一样获取信息。
答案 0 :(得分:0)
不幸的是,您根本无法使用公共API来执行此操作。 CoreLocation仅提供ProximityUUID(主要和次要)。 CoreBluetooth会阻止访问其前缀与iBeacon前缀匹配的任何数据包的原始字节。这两个API都不会显示蓝牙MAC。
信标制造商通常会构建配置应用程序,这些应用程序使用单独的专有蓝牙GATT配置服务。信标可以使用此专有服务与电话进行双向连接,并交换数据字段,告诉您所有标识符,包括蓝牙MAC。不幸的是,除非您从制造商那里获得规范或使用蓝牙数据包嗅探器对其进行反向工程,否则您可能无法使用这种私有专有的配置服务。