[ios] Core Bluetooth와 기기 감지

Core Bluetooth 프레임워크는 iOS 애플리케이션에서 Bluetooth를 이용하여 주변 기기와 통신할 수 있는 기능을 제공합니다. 이를 통해 주변의 Bluetooth LE(Device Discovery), 저에너지(LE) 기기와의 연결(Peripheral Connection), 데이터 교환(Data Exchange) 등이 가능합니다.

Core Bluetooth 이해하기

Core Bluetooth는 Bluetooth Low Energy(BLE)을 지원하며 iOS 디바이스와 다른 BLE 호환 기기 간에 효율적인 데이터 교환을 가능하게 합니다. iOS 애플리케이션은 Core Bluetooth 프레임워크를 사용하여 BLE 전송 및 수신을 위한 중앙(Central) 또는 주변(Peripheral) 역할을 수행할 수 있습니다.

기기 감지 및 연결

Core Bluetooth를 사용하여 주변 기기를 감지하려면 CBCentralManager를 초기화하고 주변 기기의 광고 패킷을 스캔할 수 있습니다.

import CoreBluetooth

// Bluetooth central manager 초기화
let centralManager = CBCentralManager(delegate: self, queue: nil)

// 주변 기기 검색
centralManager.scanForPeripherals(withServices: nil, options: nil)

위 예제에서 CBCentralManager를 사용하여 Bluetooth central manager를 초기화하고, scanForPeripherals 메서드를 통해 주변에 광고 중인 기기를 스캔합니다.

Core Bluetooth를 활용한 실제 예제

아래는 Core Bluetooth를 사용하여 주변의 BLE 기기를 검색하고 연결하는 간단한 예제 코드입니다.

import CoreBluetooth

class ScanViewController: UIViewController, CBCentralManagerDelegate {
    var centralManager: CBCentralManager!

    override func viewDidLoad() {
        super.viewDidLoad()

        centralManager = CBCentralManager(delegate: self, queue: nil)
    }

    func centralManagerDidUpdateState(_ central: CBCentralManager) {
        if central.state == .poweredOn {
            centralManager.scanForPeripherals(withServices: nil, options: nil)
        } else {
            // Bluetooth가 꺼져있거나 사용할 수 없는 상태
        }
    }

    func centralManager(_ central: CBCentralManager, 
                        didDiscover peripheral: CBPeripheral, 
                        advertisementData: [String : Any], 
                        rssi RSSI: NSNumber) {
        // 주변 기기 발견 시 처리 로직
    }
}

위 예제에서는 CBCentralManager를 사용하여 Bluetooth central manager를 초기화하고, 주변 기기 검색 및 발견에 대한 처리를 수행하는 방법을 보여줍니다.

결론

Core Bluetooth를 사용하면 iOS 애플리케이션에서 주변의 Bluetooth LE 기기를 검색하고 연결하는 기능을 구현할 수 있습니다. 주변 기기의 광고 데이터를 스캔하고 연결하여 데이터 교환을 통해 다양한 BLE 기기와 상호작용할 수 있습니다.

이상으로 Core Bluetooth를 사용하여 iOS 애플리케이션에서 기기 감지 및 연결 기능에 대해 알아보았습니다.

Apple Developer Documentation - Core Bluetooth

Raywenderlich - Getting Started with Core Bluetooth