2

屋内ナビゲーションに iBeacons を使用するアプリケーションを開発していますが、関数locationManager:rangingBeaconsDidFailForRegion:withError:が呼び出される速度が十分に高くないことがわかったので、CoreBluetooth の から RSSI データを追加しcentralManager:didDiscoverPeripheral:advertisementData: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 が異なるデバイスで異なるのはなぜですか? それは期待される動作ですか?もしそうなら、どうすればオプトアウトできますか?

4

1 に答える 1