Skip to content

Core Bluetooth

Jinwon Choi edited this page Mar 19, 2025 · 1 revision

개요

Core Bluetooth는 저전력 블루투스 연결을 지원하는 프레임워크이다.

저전력 블루투스(BLE)를 통해 주변 기기와 데이터를 송수신하는 기능을 제공하며, 배터리 소모가 적고 주기적으로 데이터를 교환하거나 장치를 연결하는데 효율적이라 많이 사용된다.

그렇다면 우리가 기획한 애플리케이션에서도 사용될 부분이 있을까?

설명

Bluetooth Low Energy (BLE)

전력 소비를 보완하는 저전력 블루투스로 통신 속도보다는 전력 소모를 줄이는 것에 초점을 맞춘 기능이다.

Core Bluetooth 핵심 기능

  • Central 데이터를 요청하는 역할. 보통 스마트폰이 Central 역할을 하며 주변의 BLE 장치를 스캔하고 원하는 데이터를 요청한다.

    • 스캔 및 탐색: CBCentralManager를 사용해 BLE 장치를 탐색. 이때 특정 Service UUID를 설정해 원하는 장치만 필터링할 수 있다.
    • 연결: 특정 Peripheral을 발견한 후, 연결 요청을 보낸다.
    • 데이터 교환: 연결된 Peripheral에서 Characteristic을 통해 데이터를 읽고 쓸 수 있으며, 알림을 설정해 주기적으로 갱신된 데이터를 받을 수 있다.
  • Peripheral(주변 장치) 데이터를 제공하는 역할. 주로 BLE 장치(스마트 기기들)가 Peripheral 역할을 하며 주기적으로 데이터를 전송하거나 중앙 장치의 요청에 응답한다.

    • 주변 장치 역할 초기화: CBPeripheral를 사용하여 주변 장치를 설정합니다.
    • Service와 Characteristic 설정: 제공할 Service와 Characteristic을 설정하고, 이를 광고해 주변에서 사용할 수 있도록 한다.
    • 광고 시작: 설정한 데이터가 주변의 Central에 인식될 수 있도록 광고를 시작한다.
    • 연결 수락 및 데이터 전송: Central이 연결 요청을 보내면 데이터를 송신하거나 요청에 맞는 데이터를 전송한다.
  • Service 특정 기능이나 특성(데이터나 동작)을 나타내는 역할. 여러 서비스가 하나의 BLE 장치에 존재할 수 있으며, 각 서비스는 고유한 서비스 UUID(범용 고유 식별자)를 가지고 있다. 각 서비스는 하나 이상의 특성(Characteristic)으로 구성된다.

  • Characteristic 해당 서비스의 특정 데이터를 나타내는 역할. 특성은 읽을 수 있거나 쓸 수 있을 뿐만 아니라 알림(Notification)이나 인디케이션(Indication)을 통해 변경 사항을 알리는 데 사용될 수도 있다.

    • 서비스는 BLE 장치가 제공하는 기능이나 특성을 정의하고, 특성은 해당 서비스의 데이터를 나타낸다.

image

Core Bluetooth 동작

  1. CBCentralManager 객체를 생성하고, BLE 권한을 요청한다.
  2. BLE 장치를 스캔하여 원하는 장치를 찾는다. 원하는 장치가 발견되면 연결을 시도한다.
  3. 연결된 장치의 서비스 목록을 검색하고 필요한 서비스와 특성을 찾는다.
  4. 특정 특성(characteristic) 값을 읽거나, 데이터를 쓰는 작업을 수행한다.
  5. 작업이 완료되면 장치와의 연결을 해제한다.

Multipeer Connectivity와의 차이

  • 기술 목적
    • CB : BLE 지원 기기와의 저전력 데이터 전송
    • MC : WiFi, Bluetooth 이용해 주변 기기들과 N : M 연결하고 데이터 전송
  • 네트워크 구조
    • CB : Central - Peripheral 형태로 1 : N 지원
    • MC : N : M 열결 지원
  • 연결 거리, 속도
    • CB : 블루투스 지원 범위 내로 제한, 소규모 데이터 전송 최적화
    • MC : WiFi 지원을 통해 좀 더 넓은 범위 가능,
  • 백그라운드 지원
    • CB : 백그라운드에서 BLE 통신을 지원
    • MC : 포그라운드에서만 원활한 통신 지원

사용

기본적으로, 현재 애플리케이션은 Nearby Interaction + Multipeer Connectivity 기반으로 작동하는 핵심 기능을 갖고 있다. 그렇기 때문에 Core Bluetooth 기능이 반드시 필요한 상태는 아니라고 보여진다.

하지만, Nearby Interaction 기능은 기기가 활성화된 상태에서만 작동한다는 제한이 존재한다. 때문에, 백그라운드 상태에서도 동작하길 바란다면 Core Bluetooth를 추가로 사용하는것이 적절해 보인다.

  • 백그라운드 상태에서 Core Bluetooth 사용해 근처 BLE 사용자 감지하여 앱을 활성화
  • 앱이 활성화되면 Nearby Interaction + Multipeer Connectivity 사용해 프로필 공유 시작

또한, BLE 동작이 Nearby Interaction보다는 조금 더 넓은 범위에서 동작하기 때문에 근처 사용자를 찾는 기능을 추가하게된다면 사용하면 좋을 것 같아 보인다.

Ref.

https://developer.apple.com/documentation/corebluetooth

https://ohwhatisthis.tistory.com/34

Welcome to SniffMEET Wiki!

💬 허거덩 팀 규칙

개발 일지

구조
NI, MPC
프로파일링
리팩토링/리디자인
테스트
Supabase

기술 공유

회의록

회의록

트러블 슈팅

발표

💬 허거덩 팀 규칙

Clone this wiki locally