[swift] Swift Core Bluetooth의 주요 기능

Swift Core Bluetooth는 iOS 애플리케이션에서 Bluetooth Low Energy(BLE) 기능을 제어하기 위한 프레임워크입니다. 이를 통해 iOS 기기를 중앙 장치 또는 주변 장치로 사용할 수 있습니다. 이번 블로그 포스트에서는 Swift Core Bluetooth의 주요 기능에 대해 알아보겠습니다.

1. Bluetooth 장치 스캔

Swift Core Bluetooth를 사용하면 가까운 Bluetooth 장치를 검색할 수 있습니다. CBCentralManager 객체를 생성하고 장치를 스캔하기 위한 필요한 설정을 구성한 후, scanForPeripherals 메서드를 호출하여 스캔을 시작할 수 있습니다. 스캔된 장치는 CBCentralManagerDelegate 프로토콜의 centralManager(_:didDiscover:advertisementData:rssi:) 메서드를 통해 알 수 있습니다.

import CoreBluetooth

class BluetoothManager: NSObject, CBCentralManagerDelegate {
    private var centralManager: CBCentralManager?

    // Bluetooth 장치 스캔 시작
    func startScan() {
        centralManager = CBCentralManager(delegate: self, queue: .main)
        centralManager?.scanForPeripherals(withServices: nil, options: nil)
    }

    // 장치 스캔 결과 처리
    func centralManager(
        _ central: CBCentralManager,
        didDiscover peripheral: CBPeripheral,
        advertisementData: [String: Any],
        rssi RSSI: NSNumber
    ) {
        // 스캔된 장치에 대한 처리
    }
}

2. Bluetooth 장치 연결

스캔된 Bluetooth 장치에 연결하려면 CBPeripheral 객체를 사용해야 합니다. 장치에 연결하기 위해 CBCentralManagerDelegate 프로토콜의 centralManager(_:didDiscover:advertisementData:rssi:) 메서드에서 스캔된 장치를 선택하고 connect 메서드를 호출하면 됩니다. 연결 상태 변경은 centralManager(_:didConnect:) 또는 centralManager(_:didFailToConnect:error:) 메서드를 통해 알 수 있습니다.

import CoreBluetooth

class BluetoothManager: NSObject, CBCentralManagerDelegate {
    private var centralManager: CBCentralManager?
    private var connectedPeripheral: CBPeripheral?

    // Bluetooth 장치 연결 시작
    func connectToPeripheral(peripheral: CBPeripheral) {
        centralManager?.connect(peripheral, options: nil)
    }

    // 장치 연결 상태 변경 처리
    func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
        connectedPeripheral = peripheral
        // 연결 성공시 처리
    }

    func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) {
        // 연결 실패시 처리
    }
}

3. 데이터 전송

Bluetooth 장치와 연결된 후에 데이터를 전송하려면 CBPeripheral 객체의 writeValue(_:for:type:) 메서드를 사용하면 됩니다. 이 메서드는 연결된 장치에 데이터를 전송합니다. 또한, 데이터 전송 결과는 peripheral(_:didWriteValueFor:error:) 메서드를 통해 알 수 있습니다.

import CoreBluetooth

class BluetoothManager: NSObject, CBPeripheralDelegate {
    private var connectedPeripheral: CBPeripheral?

    // 데이터 전송
    func sendData(data: Data) {
        if let peripheral = connectedPeripheral {
            // 데이터 전송
            peripheral.writeValue(data, for: characteristic, type: .withResponse)
        }
    }

    // 데이터 전송 결과 처리
    func peripheral(_ peripheral: CBPeripheral, didWriteValueFor characteristic: CBCharacteristic, error: Error?) {
        // 전송 결과에 따른 처리
    }
}

Swift Core Bluetooth는 더 많은 기능과 메서드를 제공하며, 위에서 언급한 기능은 그 중 일부에 불과합니다. 이 프레임워크를 사용하여 iOS 애플리케이션에서 Bluetooth Low Energy 기능을 활용할 수 있습니다.

더 자세한 내용은 Apple 개발자 문서를 참고하시기 바랍니다.