【发布时间】:2014-06-17 13:47:27
【问题描述】:
我正在开发一个使用 iBeacons 进行室内导航的应用程序,我发现函数 locationManager:rangingBeaconsDidFailForRegion:withError: 的调用率不够高,所以我将添加来自 CoreBluetooth 的 @987654322 的 RSSI 数据@。
我发现了一个奇怪的事实:当我使用 CoreLocation 收听 iBeacon 并记录外围设备 ID 时:
- (void)centralManager:(CBCentralManager *)central
didDiscoverPeripheral:(CBPeripheral *)peripheral
advertisementData:(NSDictionary *)advertisementData
RSSI:(NSNumber *)RSSI
{
NSLog(@"%@, RSSI: %@", peripheral, RSSI);
每个信标在不同的设备上使用不同的 UUID 报告:
A25804BD-D77A-5004-4C2C-301D996C7367 - my iPhone 5
843F4237-6059-9A5E-AA34-0BD92304BE1F - colleague's iPhone 5
77685805-C253-52BD-B787-8B95308834FB - other colleague's iPad mini
这个想法是将每个信标的 UUID 绑定到它的位置,因此这种行为非常破坏功能。
为什么物理上相同的信标(未关机/开机)的 UUID 在不同设备上不同?这是预期的行为吗?如果是,我该如何选择退出?
【问题讨论】:
-
与直觉相反,您看不到带有核心蓝牙的 iBeacon UUID,而是看到的是接收电话的蓝牙堆栈分配的备用标识符。
标签: ios core-bluetooth ibeacon indoor-positioning-system