你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS之藍牙簡介和運用(三):CoreBlueTooth

iOS之藍牙簡介和運用(三):CoreBlueTooth

編輯:IOS開發綜合

CoreBlueTooth 簡介: 可用於第三方藍牙設備交互,設備必需支持藍牙4.0 iPhone的設備必需是4S或許更新 iPad設備必需是iPad mini或許更新 IOS的零碎必需是IOS 6或許更新 藍牙4.0以低功耗著稱,所以普通被稱為BLE(bluetooth low energy) 運用模仿器調試
Xcode 4.6 IOS 6.1 使用場景
運入手環 智能家居 拉卡拉藍牙刷卡器 中心概念 CBCentralManager:中心設備(用來銜接到內部設備的管家) CBPeripheralManager:內部設備(第三方的藍牙4.0設備)

iOS之藍牙簡介和使用(三):CoreBlueTooth

開發步驟 樹立中心管家
// 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】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved