Я работаю над приложением, в котором мне нужно представить список устройств Bluetooth вокруг меня, где бесконтактный UUID содержит определенную подстроку. Я клонировал репо https://github.com/mlwelles/BeaconScanner и запустил приложение на своем компьютере, и оно правильно находит два маяка, которые у меня есть. Для анализа рекламных данных они используют приведенный ниже код.
+(HGBeacon *)beaconWithManufacturerAdvertisementData:(NSData *)data {
if ([data length] != 25) {
return nil;
}
u_int16_t companyIdentifier,major,minor = 0;
int8_t measuredPower,dataType, dataLength = 0;
char uuidBytes[17] = {0};
NSRange companyIDRange = NSMakeRange(0,2);
[data getBytes:&companyIdentifier range:companyIDRange];
if (companyIdentifier != 0x4C) {
return nil;
}
NSRange dataTypeRange = NSMakeRange(2,1);
[data getBytes:&dataType range:dataTypeRange];
if (dataType != 0x02) {
return nil;
}
NSRange dataLengthRange = NSMakeRange(3,1);
[data getBytes:&dataLength range:dataLengthRange];
if (dataLength != 0x15) {
return nil;
}
NSRange uuidRange = NSMakeRange(4, 16);
NSRange majorRange = NSMakeRange(20, 2);
NSRange minorRange = NSMakeRange(22, 2);
NSRange powerRange = NSMakeRange(24, 1);
[data getBytes:&uuidBytes range:uuidRange];
NSUUID *proximityUUID = [[NSUUID alloc] initWithUUIDBytes:(const unsigned char*)&uuidBytes];
[data getBytes:&major range:majorRange];
major = (major >> 8) | (major << 8);
[data getBytes:&minor range:minorRange];
minor = (minor >> 8) | (minor << 8);
[data getBytes:&measuredPower range:powerRange];
HGBeacon *beaconAdvertisementData = [[HGBeacon alloc] initWithProximityUUID:proximityUUID
major:[NSNumber numberWithUnsignedInteger:major]
minor:[NSNumber numberWithUnsignedInteger:minor]
measuredPower:[NSNumber numberWithShort:measuredPower]];
return beaconAdvertisementData;
}
Я взял этот фрагмент кода, соответствующим образом адаптированный и включенный в мой код iOS, но UUID из найденных устройств полностью отличается от представленных в приложении MacOS.
Кто-нибудь знает, есть ли какая-либо разница в рекламных данных между iOS и MacOS?
Спасибо