상세 컨텐츠

본문 제목

[iOS] WWDC 19: What's New in Core Bluetooth

iOS/iOS 지식

by 홍루피 2025. 5. 4. 21:10

본문

WWDC 19: What's New in Core Bluetooth

영상을 보고 내용을 정리하여 포스팅합니다.

BR / EDR 디바이스에 대한 지원 추가

운영하는 전송방식에 관계없이 모든 블루투스 장치와 상호작용하도록 구성

 

* BR/EDR: 자동차 블루투스, 무선 이어폰 등 지속적 연결에 많이 사용되는 블루투스 클래식 기반 기술

* BLE: 스마트 워치, 헬스케어 등 저전력, 비연속적인 연결에 주로 사용되는 기술

 

3개의 추진 목표가 있음

1. 핵심 기술을 향상시키고 2. 개인정보를 보호하고 3. 더 나은 도구를 개발하는 것

LE2 메가비트 개선

LE2 Mbps는 블루투스 5.0의 새로운 기능으로 무선속도가 1에서 2Mbps로 증가 가능

이는 동일한 시간에 두 배의 비트수를 전송할 수 있어 연결이 빠르고 전력 효율성이 높아짐

액세서리를 개발하는 경우 LE2 Mbps를 지원해야 함

 

블루투스 5.0의 기능으로 세 가지 요점을 본질적 개선했음

광고 확장

 

광고채널에서 작은 페이로드를 보내서 더 넓은 채널로 점프해 더 큰 페이로드를 전송

결과적으로 3개의 광고 채널의 혼잡을 완화

확장 스캔

확장된 광고를 스캔할 수 있지만, LE 2 Mbps로 전송되는 확장 광고만 스캔

액세서리를 개발하는 경우

LE2 Mbps로 확장된 광고를 지원해야함

어플리케이션에 투명. 기존 스캔 API, 스캔 필터를 사용할 수 있음(레거시, 확장 광고 모두 스캔 가능)

 

확장 연결

레거시 연결을 통해 광고주는 연결 가능한 광고를 함

스캐너는 연결하기 위해 연결 식별을 보냄(이것에 대한 ACK는 없음)

 

스캐너는 연결 표시가 광고주에게 도달한다고 가정함

그런다음 호스트 프로세서를 깨우고 새로운 연결이 있다고 알려줌

 

그러나 스캐너와 광고주의 RF 특성이 다를 수 있고 RF 환경은 매우 역동적이기 때문에

연결표시가 광고주에게 도달하지 못할 수도 있음

 

이로 인해

1. 하루종일 전체 프로세서가 불필요하게 깨어날 수 있으며

2. 배터리 소모가 더 심해짐

3. 사용자가 응용프로그램이나 액세서리를 계속 사용한 상태가 될 수 있음

 

* RF(Radio Frequency): 무선 주파수, 무선통신이 가능하도록 하는 핵심적인 요소를 말함

확장된 연결을 통해

1. 광고주는 연결 가능한 확장 광고를 함

2. 스캐너는 연결 요청을 보냄

3. 광고주는 명시적 연결 응답을 보냄

4. 스캐너가 연결 응답을 받았을 때만 호스트 프로세서를 깨움

 

이로 인해 확장연결이 더 강력하고 전력 효율이 높음

그러나 액세서리를 개발하는 경우, 액세서리는 연결가능한 확장 광고를 지원해야 함

 

BR/EDR 지원에 대한 CoreBluetooth 지원

GATT는 블루투스 SIG에서 정의한 프로토콜

서비스와 특성을 쉽게 읽고 쓸 수 있으며 특성에 대한 변경점을 받아 볼 수 있음

 

* GATT(Generic Attribute Profile)
- 장치 간 데이터 교환을 위한 표준 (주로 central과 peripheral 간 통신에서 사용)

- 모든 데이터는 서비스와 특성으로 구성

 

자동차 헤드 유닛, 스피커, 헤드폰과 같은 클래식 장치들과 관련해 BR/EDR(클래식 장치)에 대한 지원을 추가하고 있음

 

CoreBluetooth 2018 vs CoreBluetooth 2019

2018년에는 두 가지의 다른 전송방식으로 구성되었음

기본적으로 시스템 프로파일, 시스템의 오디오, A2DP, HEP 및 원격 제어 프로파일과 같은 것들을 실행하고 있었음

다른 한편으로 저어네지인 경우 GATT를 통해 코어블루투스를 실행. 이는 엑세서리와 인터페이스 하는데 사용

 

2019년에는 두 계층을 병합, 아무것도 하지 않고 BR/EDR 및 저에너지 모두에 액세스 가능

투명한 엑세스가 가능하다 = API에는 많은 변화가 없지만, 클래식 장치와 저에너지 장치 모두에서 작업할 수 있다

 

BR/EDR 장치에서도 GATT 사용. 여전히 동일한 Bluetooth SIG 프로토콜을 실행하고 있음

응용프로그램과 개발자에게 CBPeripheral API는 정확히 동일하며 서비스 검색, 특성 변경을 알릴 수 있음

 

CBCentralManager에는 새로운 변화가 있음

CentralManager에 서비스 UID 또는 주변기기 UID에 대한 옵션을 지정해서 등록할 수 있음

일치하는 옵션을 찾으면 delegate 콜백을 받을 수 있고 여기에는 peripheral에 대한 정보와 연결 이벤트 유형이 포함된다고 함

 

Incomming Connection

CBCentralManager를 인스턴스화 한 후 서비스UID를 통해 기기를 찾거나,

BR/EDR의 경우 블루투스 설정으로 이동해 장치를 검색하고 연결을 시도할 것임.

원하는 서비스를 찾는다면, delegate 콜백을 받을 수 있음

콜백을 통해 주어진 peripheral(주변기기) 주변에서 연결을 호출 할 수 있음 (connectionEventDidOccur)

기기와 연결을 했다면 등록한 필터를 지울 수 있음

 

Outgoing Connection

이미 알려진 기기가 있고 짝을 이루고 연결하고 싶을 때를 가정

BR/EDR 장치에 connect를 호출하는 경우, 해당 장치와 연결하려고 할 것임

장치가 연결되었을 때 delegate 콜백을 얻을 수 있음 (didConnect peripheral)

BR/EDR 장치의 새로운 API를 살펴보았고, CoreBluetooth Dual-Mode에 대한 개선사항을 진행해보도록 하겠음

Improving Dual-Mode Pairing

블루투스 기기에는 로우 에너지 기기, 하나는 BR/EDR 기기가 있다고 함

그렇기 때문에 이 기기들을 다루는데 어려움이 있었고 이를 완화하기 위해 노력했다고 함

 

Crooss Transport Key Derivation(CTKD)을 통한 페어링 개선

블루투스 4.2 SIG 사양을 가짐

기본적으로 단일 페어링을 통해 다른 전송에 대한 링크 키를 도출

장치에 단일 Peripheral에 대한 식별자가 있기 때문에 장치 전송에 대해 신경쓰지 않아도 됨

이것은 응용프로그램에 투명하고, 두 장치에 대한 단일 페어링이 존재하여 저에너지와 BR/EDR을 완벽하게 사용할 수 있음을 의미

따라서 두 장치를 보았을 때 이제 하나를 볼 수 있음

 

사용자의 전체적인 기기의 발견과 페어링 경험을 제어하고 싶은 상황을 가정

사용자가 설정으로 들어가서 스캔을 하는 대신, 이미 사용한 경험이 남아있으므로 저에너지 기기의 광고를 찾을 수 있음

장치를 찾으면 connect 호출, LE를 통해 연결하고 보호특성(Characteristic)에 액세스 할 수 있음

CTKD로 인해 짝을 이룰 시 키(LE, BR/EDR)를 도출

더 많은 페어링을 하지 않고 연결을 만들 수 있음

 

Dual Mode 연결 개선(Bridging)

홈 오디오 장치를 계획한다고 가정.

사용자가 앱을 사용하고 사용자가 장치에 근접해 있을 때, 음악이나 팟캐스트와 같은 미디어를 사용하도록 연결을 트리거 한다면 좋을 것.

사용자가 음악이나 팟캐스트를 제기하기를 원하는 것 = iOS가 BR/EDR 채널을 제기해야한다는 것을 의미

브릿징은 BR/EDR 프로파일을 제기하기 위해 저에너지 근접성을 활용하여 작동

이것은 CTKD를 지원하는 모든 장치에서 작동하고 응용프로그램에서 활용하기 쉬움

CBManagerConnect에서 새로운 키를 사용하며 TransportBridgingKey라고 함

 

옵션 딕셔너리에 해당 키를 추가하고 이 키를 전달 할 때, 저에너지를 통해 장치에 연결하려고 노력할 것임

그리고 그것을 찾으면 즉시 BR/EDR을 통해 페이지에 올리고 가능한 많은 프로필을 연결함

결과적으로 사용자는 아무것도 하지 않고도 멀티미디어 프로필을 원활하게 사용할 수 있게 됨

 

Privacy Update

Corebluetooth는 사용자 인증(User Autorization) 및 액세서리 알림(Accessary Notification)을 위한 두 가지 주요 영역을 향상

 

사용자 인증(User Autorization)

iOS12에서 CBperipheralManager를 인스턴스화하고, 백그라운드에 있을 때 광고하고 싶다면 사용자 승인을 받아야했음

올해 앱에서 코어 블루투스 API를 사용하는 경우 사용자 승인을 받아야 함

iOS, watchOS, tvOS 모두에서 승인이 필요

앱이 watchOS에서 실행되면 iOS와 watchOS간에 권한이 공유되며, 사용자는 이 권한을 한번만 부여 해야함

(독립형 watchOS는 해당되지 않음)

사용자 승인의 가장 첫번째 단계는 info.plist에 권한을 추가하는 것임. 

이 권한을 추가하는데는 세가지 이유가 있음

 

1. 앱이 블루투스에 액세스 해야 하는 이유를 사용자에게 전달

2. 필수적으로 필요하며 채택하지 않을 시 앱 출시 시 충돌이 발생

3. 앱 검토 프로세스는 모든 사용 설명 문자열(Usage Description)을 검토하며 의미를 확인

사용자가 블루투스에 대한 액세서리를 허용했는지, 거부했는지 등을 알 수 있는 신규 프로퍼티를 제공

 

CoreBluetooth 앱에서 가장 먼저할 일은 CBCentralManager, CBPeripheralManager를 인스턴스화 하는 것

블루투스에서 받을 최초의 콜백은 didUpdateState 콜백임. 여기에서 상태값을 보고 사용자가 사용할 준비가 되어있는지 확인이 가능

unautorized인 경우 사용자가 앱의 엑세스를 거부했는지 확인할 수 있음

상당히 상태값이 많으니 powerOn만 보지 말고 열심히 살펴보라고 함

 

액세서리 알림(Accessary Notification)

Apple은 ANCS 또는 Apple Notification Center Service를 구현함

이 서비스는 액세서리가 iOS 알림 센터에서 시스템 및 앱 알림을 얻을 수 있는 GATT 서버 서비스임

ANCS의 개인정보 업데이트는 알림을 액세서리와 공유하기 위해 사용자 인증이 필요하다는 것임

iOS13업데이트를 하면 액세서리가 연결되어 알림을 등록하면 사용자에게 권한 프롬프트가 표시될 것임

사용자가 권한을 승인할지 결정하면 블루투스-장치별 설정에서 이를 수정할 수 있음

 

* ANCS: iOS 장치에서 발생하는 알림을 블루투스 액세서리(BLE)에 전달해주는 서비스

 

CBCentralManager에서 ANCS를 지원하는 주변 장치를 알고 있으면 새로운 CBConnect Option을 사용할 수 있음

이 작업을 수행하면 연결 및 페어링 시 사용자에게 권한경고를 표시하고,

이에 응답하면 ANCS 승인이 변경되었음을 의미하는 delegate 콜백을 받을 수 있음 (didUpdateANCSAutorization)

그리고 ancsAutorized 변수를 활용해 그 값을 받아볼 수도 있음

 

* Best Practices

1. CoreBluetooth API를 필요로 하는 경우에만 API를 호출할 것

2. 제한된 기간만 스캔하고 광고할 것

- 앱이 광고될 때 사용자의 휴대폰에서 정보의 공유하고 수행 기간을 제한하면 신뢰를 높이는데 도움

3. 스캔 조건을 구체적으로 설정하고 해당되는 UUID만 찾아야 함

4. 응용 프로그램이 CoreBluetooth에 액세스 해야 하는 이유에 대해 사용자에게 투명하게 할 것

 

PacketLogger

블루투스 패킷 분석 응용 프로그램

신뢰 연결 또는 프로토콜로 필터링을 할 수 있음

텍스트 또는 정규식으로 검색 및 개별 패킷을 주석 및 플래그하고 분석을 위해 원시 데이터를 내보낼 수도 있음

 

다크모드에서의 최상위 레벨 모습

패킷을 클릭하고 드릴다운을 통해 전체 프로토콜 계층 구조를 보고 원시 바이트의 가장 낮은 계층까지 검사 가능

Live Capture

iOS에 로그인 프로파일을 설치하고 Mac에 연결하고 PacketLogger를 실행 한 후

iOS장치에서 액세서리로 라이브 블루투스 트래픽 캡처 가능

여러 iOS 장치를 연결하고 라이브 트래픽을 캡처할 수도 있음 

Summary

최신 블루투스 표준과 칩셋을 사용

BR/EDR 장치들로 Core Bluetooth 앱 구축 가능

항상 사용자의 개인정보를 보호하고 제품에 대한 신뢰를 보호

Apple 장치의 액세서리 설계 치짐을 참고

 

참고자료

 

 

관련글 더보기