屋内ナビゲーションに 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 が異なるデバイスで異なるのはなぜですか? それは期待される動作ですか?もしそうなら、どうすればオプトアウトできますか?