蘋果在原生的CoreBluetooth中,將設(shè)備的Mac進行了封裝(通過外設(shè)的Mac地址和手機的Mac地址進行了加密計算)锈死,最后對外提供了一個UUID捎拯,在一臺手機上你弦,一般情況,UUID就可以作為這個外設(shè)的唯一標識了呀非,但是如果換了一臺手機的話坚俗,可能就會發(fā)生變化,所以如果需求是需要在多臺手機上的話岸裙,UUID可能就不太實用了猖败。
藍牙的Mac地址可以加到藍牙的廣播包里,但是這樣的話對硬件來說負擔很大而且芯片也不穩(wěn)定降允,也可以將藍牙的Mac地址寫在藍牙設(shè)備系統(tǒng)的sevrice 里 恩闻。我們的需求是在通過Mac地址連接藍牙設(shè)備,所以必須在連接藍牙之前獲取藍牙的Mac地址剧董。
通過廣播包獲取Mac地址
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
在這個代理方法我們可以拿到一個advertisementData幢尚,這個字典類型的就是廣播包,這里面會有一些設(shè)備的屬性翅楼,比如設(shè)備的名字啊尉剩,服務(wù)等。但是只有kCBAdvDataManufacturerData這個key是可以放入信息的毅臊,硬件工程師可以將Mac地址寫到這個字段里去边涕。
if ([advertisementData[@"kCBAdvDataManufacturerData"] containsObject:@"MAC"])
{
NSLog(@"廣播字符串 %@ %@",peripheralName,advertisementData[@"kCBAdvDataManufacturerData"]);
}
IMG_2018.jpg