class BluetoothServices: NSObject {
static let shared = BluetoothServices()
var central: CBCentralManager?
var peripheral: CBPeripheralManager?
var connectedPeripheral: CBPeripheral?
var rxtxCharacteristic: CBCharacteristic?
weak var delegate: BluetoothServicesDelegate?
private var blePeripherals: [CBPeripheral] = []
/// 初始化:副線程
private override init() {
super.init()
let queue = DispatchQueue.global()
central = CBCentralManager(delegate: self, queue: queue)
}
/// 掃描藍芽裝置
func startScan() {
central?.scanForPeripherals(withServices: nil, options: nil)
}
/// 停止掃描
func stopScan() {
central?.stopScan()
}
/// 連接藍牙週邊設備
/// - Parameters:
/// - peripheral: 要連接的藍牙周邊設備
func connectPeripheral(peripheral: CBPeripheral) {
self.connectedPeripheral = peripheral
central?.connect(peripheral, options: nil)
}
/// 中斷與藍芽週邊設備的連接
/// - Parameters:
/// - peripheral: 要中斷連接的藍牙周邊設備
func disconnectPeripheral(peripheral: CBPeripheral) {
central?.cancelPeripheralConnection(peripheral)
}
}
BluetoothServices類別的介紹
BluetoothServices類別是一個用於處理藍牙設備的管理類別。它具有以下主要功能和屬性:
單例模式:這個類別使用單例模式,確保在應用程序中只有一個實例存在,可以透過shared屬性訪問。
屬性:
central:用於管理中央(Central)藍牙角色的CBCentralManager實例。
peripheral:用於管理周邊(Peripheral)藍牙角色的CBPeripheralManager實例。
connectedPeripheral:當前已連接的藍牙周邊設備的CBPeripheral實例。
rxtxCharacteristic:用於讀寫數據的CBCharacteristic實例。
delegate:一個遵循BluetoothServicesDelegate協議的委託對象,用於處理藍牙事件。
方法:
startScan():啟動藍牙設備的掃描。
stopScan():停止藍牙設備的掃描。
connectPeripheral(peripheral:):連接指定的藍牙周邊設備。
disconnectPeripheral(peripheral:):中斷與指定藍牙周邊設備的連接。
委託方法:實現CBCentralManagerDelegate和CBPeripheralDelegate協議的方法,用於處理藍牙事件。
這個類別的主要目標是管理藍牙設備的連接,發現服務和特徵,並處理數據交換。在下一篇文章中,我們將深入探討CBCentralManagerDelegate協議的實現。