[ios] Core Bluetooth 백그라운드 모드

iOS 앱에서 Core Bluetooth 프레임워크를 사용하여 Bluetooth 장치와 상호 작용할 때, 백그라운드 모드에서도 연결을 유지하고 데이터를 교환할 수 있습니다. 이 기능을 사용하면 앱이 백그라운드에서 실행 중일 때에도 Bluetooth 장치로 데이터를 보낼 수 있고, 데이터를 수신할 수 있습니다.

백그라운드 모드의 제한 사항

iOS 플랫폼에서는 백그라운드에서 실행되는 앱의 전력 소비를 최적화하기 위해 몇 가지 제한 사항이 적용됩니다. 이는 Core Bluetooth을 사용하는 앱에도 영향을 미칠 수 있습니다. 일반적으로 백그라운드 모드에서 Core Bluetooth을 사용하는 경우에는 다음과 같은 제한 사항을 고려해야 합니다.

  1. 연결 유지 제한: 백그라운드 모드에서는 BLE(Bluetooth Low Energy) 장치와의 연결을 30초 간격으로 유지합니다. 이 간격은 iOS 장치의 절전 모드와 관련이 있으며, 이를 고려하여 앱을 설계해야 합니다.

  2. 데이터 전송 제한: 백그라운드 모드에서 데이터를 전송할 때도 일정한 제한이 적용됩니다. 이는 대량의 데이터를 주기적으로 전송하는 앱에서 주의해야 할 사항입니다.

Core Bluetooth 백그라운드 모드 설정

Core Bluetooth을 사용하여 백그라운드 모드에서 BLE 장치와 상호 작용하려면 다음 단계를 따라야 합니다.

  1. Info.plist에 권한 추가: Info.plist 파일에 NSBluetoothAlwaysUsageDescription 키를 추가하여 BLE 장치와의 상호 작용을 설명하는 메시지를 제공해야 합니다.

     <key>NSBluetoothAlwaysUsageDescription</key>
     <string>블루투스 기기와 상호 작용하기 위해 백그라운드 액세스가 필요합니다.</string>
    
  2. Background Modes 활성화: Xcode 프로젝트 설정에서 “Capabilities” 탭으로 이동하고, “Background Modes”를 활성화한 후 “Uses Bluetooth LE accessories” 옵션을 선택해야 합니다.

  3. Centrals 백그라운드 실행 설정: central manager 객체를 초기화할 때 CBCentralManagerOptionRestoreIdentifierKey 옵션을 사용하여 백그라운드 실행을 위한 식별자를 설정해야 합니다. 이렇게 하면 앱이 백그라운드로 이동한 후에도 이전에 연결된 BLE 장치와의 연결을 복원할 수 있습니다.

let centralManager = CBCentralManager(delegate: self, queue: nil, options: [CBCentralManagerOptionRestoreIdentifierKey: "MyCentralManagerIdentifier"])

Core Bluetooth을 사용하여 앱을 개발할 때에는 위의 단계를 따라 백그라운드 모드에서의 동작을 올바르게 구현해야 합니다.

더 자세한 정보는 Core Bluetooth 프로그래밍가이드를 참고하십시오.