低功耗
著稱,所以普通被稱為BLE(bluetooth low energy)
運用模仿器調試 // 1. 創立中心管家,並且設置代理
self.cmgr = [[CBCentralManager alloc]initWithDelegate:self queue:nil];
掃描外設(discover)
// 2. 在代理辦法中掃描內部設備
/**
* scanForPeripheralsWithServices :假如傳入指定的數組,那麼就只會掃描數組中對應ID的設備
* 假如傳入nil,那麼就是掃描一切可以發現的設備
* 掃描完內部設備就會告訴CBCentralManager的代理
*/
- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
if ([central state] == CBCentralManagerStatePoweredOn) {
[self.cmgr scanForPeripheralsWithServices:nil options:nil];
}
}
/**
* 發現內部設備,每發現一個就會調用這個辦法
* 所以可以運用一個數組來存儲每次掃描完成的數組
*/
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *,id> *)advertisementData XmlRss/ target=_blank class=infotextkey>XmlRss/ target=_blank class=infotextkey>RssI:(NSNumber *)XmlRss/ target=_blank class=infotextkey>XmlRss/ target=_blank class=infotextkey>RssI
{
// 有能夠會招致反復添加掃描到的外設
// 所以需求先判別數組中能否包括這個外設
if(![self.peripherals containsObject:peripheral]){
[self.peripherals addObject:peripheral];
}
}
銜接外設
/**
* 模仿開端銜接辦法
*/
- (void)start
{
// 3. 銜接外設
for (CBPeripheral *ppl in self.peripherals) {
// 掃描外設的服務
// 這個操作應該交給外設的代理辦法來做
// 設置代理
ppl.delegate = self;
[self.cmgr connectPeripheral:ppl options:nil];
}
}
掃描外設中的服務和特征
服務和特征的關系
每個藍牙4.0的設備都是經過服務和特征來展現自己的,一個設備必定包括一個或多個服務,每個服務上面又包括若干個特征。
/**
* 銜接外設成功調用
*/
- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral
{
// 查找外設服務
[peripheral discoverServices:nil];
}
/**
* 發現服務就會調用代理辦法
*
* @param peripheral 外設
*/
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error
{
// 掃描到設備的一切服務
NSArray *services = peripheral.services;
// 依據服務再次掃描每個服務對應的特征
for (CBService *ses in services) {
[peripheral discoverCharacteristics:nil forService:ses];
}
}
與外設做數據交互 /**
* 發現服務對應的特征
*/
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error
{
// 服務對應的特征
NSArray *ctcs = service.characteristics;
// 遍歷一切的特征
for (CBCharacteristic *character in ctcs) {
// 依據特征的獨一標示過濾
if ([character.UUID.UUIDString isEqualToString:@"XMG"]) {
NSLog(@"可以吃飯了");
}
}
}
斷開銜接
/**
* 斷開銜接
*/
- (void)stop
{
// 斷開一切銜接上的外設
for (CBPeripheral *per in self.peripherals) {
[self.cmgr cancelPeripheralConnection:per];
}
}
【iOS之藍牙簡介和運用(三):CoreBlueTooth】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!