2014-06-17 3 views
2

실내 탐색에 iBeacons을 사용할 응용 프로그램을 개발 중이며라는 함수의 속도가 충분히 높지 않아서 CoreBluetooth의 centralManager:didDiscoverPeripheral:advertisementData:RSSI:의 RSSI 데이터다른 장치에서 iBeacons의 UUID가 다릅니다.

그리고 나는 호기심 사실을 발견 : 나는 CoreLocation와 아이 비콘을 듣고 주변 ID 로그인 할 때 :

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 

:

- (void)centralManager:(CBCentralManager *)central 
    didDiscoverPeripheral:(CBPeripheral *)peripheral 
    advertisementData:(NSDictionary *)advertisementData 
    RSSI:(NSNumber *)RSSI 
{ 
    NSLog(@"%@, RSSI: %@", peripheral, RSSI); 

각 비콘이 다른 장치에 다른 UUID로보고를 아이디어는 각 비콘의 UUID를 해당 위치에 바인딩하는 것이므로이 기능은 기능이 크게 손상되었습니다.

왜 물리적으로 동일한 비컨 (전원이 꺼져 있거나 켜져 있지 않음)의 UUID가 서로 다른 장치에서 다른가요? 그것은 예상되는 행동인가? 그것이 그렇다면, 어떻게 내가 그것을 거부 할 수 있습니까?

+0

반대로, 핵심 블루투스가있는 iBeacon UUID를 볼 수 없습니다. 수신 전화의 블루투스 스택에 의해 할당 된 식별자가 대신 표시됩니다. –

답변

5

CoreBluetooth을 사용하여 표준 iBeacons의 식별자를 읽을 수 없습니다. Chris Stratton이 언급 한 바에 따르면 CoreBluetooth에서 제공하는 UUID는 기기 UUID이며 iOS가 세션별로 임의로 생성합니다. iBeacon ProximityUUID와는 아무런 관련이 없습니다. 당신이 CoreBluetooth와 아이 비콘 식별자를 읽을 수없는 이유에

자세한 내용은 여기에 있습니다 : http://developer.radiusnetworks.com/2013/10/21/corebluetooth-doesnt-let-you-see-ibeacons.html

당신 만 locationManager:didRangeBeacons:inRegion: 콜백 당 RSSI 측정에 얻을 것이 사실이다. 이것은 맞춤 거리 추정을하는 것에 대한 실질적인 장애물입니다. iOS는 10KHz에서 전송하는 iBeacons의 10 배를 측정 할 수 있습니다. CoreBluetooth을 사용하면 더 많은 측정을 할 수 있지만, 문제는 CoreBluetooth으로 볼 수있는 블루투스 장치가 CoreLocation으로 볼 수있는 iBeacons와 일치하는 안정적인 방법이 없다는 것입니다.