비콘의 UUID, major, minor, power 정보 추출하기

2016. 4. 21. 18:05아이폰 개발

비콘의 UUID, major, minor, power 정보 추출 방법

advertisingData 개념을 몰라서 헤멨으나 다행히 어렵지 않게 처리 완료.

비콘에 따라서 넘어오는 데이터 형식이 다소 차이가 있다. 

http://stackoverflow.com/questions/21163290/ios-ibeacon-how-to-get-all-of-proximityuuid-programmatically

http://stackoverflow.com/questions/29946179/corebluetooth-discover-pheriperal-advertisementdata-format


NSRange uuidRange = NSMakeRange(4, 16);
NSRange majorRange = NSMakeRange(20, 2);
NSRange minorRange = NSMakeRange(22, 2);
NSRange powerRange = NSMakeRange(24, 1);

Byte uuidBytes[16];
[data getBytes:&uuidBytes range:uuidRange];
NSUUID *uuid = [[NSUUID alloc] initWithUUIDBytes:uuidBytes];

int16_t majorBytes;
[data getBytes:&majorBytes range:majorRange];
int16_t majorBytesBig = (majorBytes >> 8) | (majorBytes << 8);

int16_t minorBytes;
[data getBytes:&minorBytes range:minorRange];
int16_t minorBytesBig = (minorBytes >> 8) | (minorBytes << 8);

int8_t powerByte;
[data getBytes:&powerByte range:powerRange];



return @{ @"uuid" : uuid,
          @"major" : @(majorBytesBig),
          @"minor" : @(minorBytesBig),
          @"power" : @(powerByte)
          };


iOS에서는 비콘의 Mac Address를 알아내는 것은 불가라고 한다.

private API를 이용하면 가능하다고 하는 것 같은데 알고 싶지 않다.


CoreBluetooth 기본 개념 잘 정리된 것

http://stonerain.tistory.com/88


CoreBluetooth 예제

http://samse.tistory.com/entry/iOS-7-SDK-Core-Bluetooth-%EC%8B%A4%EC%A0%84-%EC%97%B0%EC%8A%B5