CBCentralManagerDelegate的實現
extension BluetoothServices: CBPeripheralDelegate {
/// 發現服務
func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {
if let services = peripheral.services {
for service in services {
print(service)
peripheral.discoverCharacteristics(nil, for: service)
}
}
}
/// 服務更改
func peripheral(_ peripheral: CBPeripheral, didModifyServices invalidatedServices: [CBService]) {
}
/// 發現對應服務的特徵
func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
if let characteristics = service.characteristics {
for characteristic in characteristics {
print(characteristic)
if characteristic.uuid.isEqual(CBUUID(string: "FFE1")) {
peripheral.readValue(for: characteristic)
peripheral.setNotifyValue(true, for: characteristic)
rxtxCharacteristic = characteristic
}
}
}
}
/// 特徵值變更
func peripheral(_ peripheral: CBPeripheral,
didUpdateValueFor characteristic: CBCharacteristic,
error: Error?) {
guard characteristic == rxtxCharacteristic,
let characteristicValue = characteristic.value,
let ASCIIstring = String(data: characteristicValue,
encoding: String.Encoding.utf8) else {
return
}
var characteristicASCIIValue = Character(ASCIIstring)
delegate?.getBlEPeripheralValue(value: characteristicASCIIValue.asciiValue!)
}
}
CBCentralManagerDelegate介紹
CBCentralManagerDelegate協議定義了處理中央(Central)藍牙角色事件的方法。BluetoothServices類別實現了這些方法來監控藍牙的狀態和設備的發現。
以下是一些CBCentralManagerDelegate協議方法的介紹:
centralManagerDidUpdateState(_:)方法:這個方法用於監聽CBCentralManager的狀態變化。根據 CBCentralManager的狀態,可以執行不同的操作,例如啟動藍牙設備的掃描。
centralManager(_:didDiscover:advertisementData:rssi:)方法:當中央設備發現一個周邊藍牙設備 時,這個方法被調用。它提供了設備的信息,包括名稱、廣告數據和信號強度(RSSI)。BluetoothServices類 別使用這個方法來記錄和報告發現的藍牙設備。
在CBCentralManagerDelegate的實現中,我們還可以處理其他事件,如藍牙設備的連接、服務的發現等。這些方法允許我們有效地管理中央藍牙角色的操作。在下一篇文章中,我們將繼續探討CBPeripheralDelegate協議的實現,該協議用於處理周邊藍牙角色的事件。