Jercy's Interview Questions for iOS Developers의 질문 중 하나.
0. 사전 지식
- CoreBlutooth: 블루투스를 연결하려면 여러 프로토콜이 있고, 그런것들을 대응해줘야 하지만, 애플에서 추상화 하여 블루투스 연결을 할 수 있는 사용할 수 있는 프레임워크.
- BLE: Bluetooth Low Energy의 약자로, 전력 소모에 초점을 맞춘 블루투스 통신 기술.
- Central: 중앙장치라고도 해석하던데, 그냥 본인,, iOS에서는 그냥 아이폰이라고 보면 될 것 같다.
- Peripheral: 주변장치, iPad에서는 펜슬이나, 에어팟 등이 이에 해당할 수 있을 것 같다. 내가 이해하기로는 연결된 상대 정도로 이해할 수 있을 것 같다.
1. CoreBluetooth의 Delegate들
- CBCentralManagerDelegate: CBCentralManager의 상태 변화와 BLE 주변 장치와의 상호작용에 대한 이벤트를 처리하기 위한 Delegate
- CBPeripheralDelegate: CBPeripheral 객체의 상태 변화와 상호작용에 대한 이벤트를 처리하기 위한 Delegate
2. iOS 앱에서 Core Bluetooth를 사용하여 BLE(Bluetooth Low Energy) 통신을 구현하는 방법은 무엇인가요?
A. Central과 Peripheral의 역할과 상호작용 과정을 설명해주세요.
Central은 사용자의 기기, Peripheral을 탐색하는 역할을 한다.
Peripheral은 주변 기기, 자신을 광고하여 Cenetral과 연결 될 수 있도록 한다.
Central은 Peripheral이 데이터를 쏘며 광고하는걸 발견하고, Connect를 시도하게 된다. Connect에 성공하게 되면 각자의 요청에 따라 데이터를 주고받을 수 있게 된다.
B.CBCentralManager와 CBPeripheralManager의 주요 메서드와 델리게이트 메서드를 설명해주세요.
CBCentralManager은 Peripheral을 탐색하고 연결하는 메서드를 갖고 있다.
CBPeripheralManager은 Central과 연결되면, 데이터를 수신하는 메서드를 갖고 있다.
C. BLE 통신에서 사용되는 서비스(Service)와 특성(Characteristic)의 개념과 구현 방법을 설명해주세요.
Service: 이 장치가 어떤 장치인지 나타내는 UUID
Characteristic: 그 장치에서 어떤 모듈, 특정 데이터에 접근할 수 있는 UUID