투케이2K

609. (ios/swift5) [간단 소스] CBPeripheralManager 간단 설명 및 사용 옵션 정리 본문

IOS

609. (ios/swift5) [간단 소스] CBPeripheralManager 간단 설명 및 사용 옵션 정리

투케이2K 2024. 12. 9. 18:52

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

 

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Swift


- 개발 툴 : Xcode


- 기술 구분 : CBPeripheralManager / 주변 기기 관리 및 모니터링

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[설명 정리]
// --------------------------------------------------------------------------------------

1. CBPeripheralManager 은 로컬 주변 기기 Generic Attribute Profile (GATT) 서비스를 관리하고 모니터링 할 수 있는 객체입니다.


2. CBPeripheralManager 은 Core Bluetooth 객체를 사용해 블루투스 광고 아이디 생성 및 주변 신호를 스캔할 수 있습니다.


3. CBPeripheralManager 사용 가능 지원 범위 : 

  >> iOS 6.0 이상
  >> 아이패드OS 6.0 이상
  >> 맥 카탈리스트 13.1+
  >> 맥OS 10.9 이상
  >> tvOS 9.0 이상
  >> 비전OS 1.0+
  >> 워치OS 2.0 이상


4. CBPeripheralManager 초기화 및 관리자 관련 주요 함수 : 

  >> convenience init() : 대리자 없이 주변 장치 관리자를 초기화합니다.
  >> convenience init(delegate: (any CBPeripheralManagerDelegate)?, queue: dispatch_queue_t?) : 지정된 대리자 및 디스패치 대기열로 주변 장치 관리자를 초기화합니다.
  >> init(delegate: (any CBPeripheralManagerDelegate)?, queue: dispatch_queue_t?, options: [String : Any]?) : 지정된 대리자, 디스패치 대기열 및 초기화 옵션을 사용하여 주변 장치 관리자를 초기화합니다.
  >> var delegate: (any CBPeripheralManagerDelegate)? : 주변 이벤트를 수신하도록 지정된 대리자 개체입니다.
  >> 주변 장치 관리자 초기화 옵션
    - let CBPeripheralManagerOptionShowPowerAlertKey : String : 주변 장치 관리자를 인스턴스화할 때 Bluetooth가 전원이 꺼진 상태인 경우 시스템에서 경고해야 하는지 여부를 지정하는 부울 값입니다.
    - let CBPeripheralManagerOptionRestoreIdentifierKey : String : 주변 장치 관리자를 인스턴스화하는 데 사용되는 고유 식별자(UID)입니다.


5. CBPeripheralManager 서비스 추가 및 제거 관련 주요 함수 : 

  >> func add(CBMutableService) : 서비스와 관련 특성 및 특성 설명자를 로컬 GATT 데이터베이스에 게시합니다.
  >> func remove(CBMutableService) : 로컬 GATT 데이터베이스에서 지정된 게시된 서비스를 제거합니다.
  >> func removeAllServices() : 로컬 GATT 데이터베이스에서 게시된 모든 서비스를 제거합니다.


6. CBPeripheralManager 광고 관리 관련 주요 함수 : 

  >> func startAdvertising([String : Any]?) : 주변 장치 관리자 데이터를 광고합니다.
  >> func stopAdvertising() : 주변 장치 관리자 데이터 광고를 중지합니다.
  >> var isAdvertising: Bool : 주변 장치가 데이터를 광고하고 있는지 여부를 나타내는 부울 값입니다.


7. CBPeripheralManager 특성 값 업데이트 보내기 관련 주요 함수 : 

  >> func updateValue(Data, for: CBMutableCharacteristic, onSubscribedCentrals: [CBCentral]?) -> Bool : 알림이나 표시를 통해 업데이트된 특성 값을 하나 이상의 구독된 센터에 보냅니다.


8. CBPeripheralManager 읽기 및 쓰기 요청에 대한 응답 관련 주요 함수 : 

  >> func respond(to: CBATTRequest, withResult: CBATTError.Code) : 연결된 중앙에서 읽기 또는 쓰기 요청에 응답합니다.


9. CBPeripheralManager 연결 대기 시간 설정 관련 주요 함수 : 

  >> func setDesiredConnectionLatency(CBPeripheralManagerConnectionLatency, for: CBCentral) : 중앙 장치에 대한 기존 연결에 대해 원하는 연결 대기 시간을 설정합니다.
  >> enum CBPeripheralManagerConnectionLatency : 주변 장치 관리자의 연결 지연 시간을 나타내는 값입니다.


10. CBPeripheralManager L2CAP 채널 사용 관련 주요 함수 : 

  >> func publishL2CAPChannel(withEncryption: Bool) : 수신 L2CAP 채널 연결에 대한 리스너를 생성합니다.
  >> func unpublishL2CAPChannel(CBL2CAPPSM) : 로컬 시스템에서 게시된 서비스를 제거합니다.

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[애플 공식 사이트]

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


[블루투스 (bluetooth) 신호 활성 수행 - CBPeripheralManager]

https://blog.naver.com/kkh0977/222558588251?trackingCode=blog_bloghome_searchlist


[CBPeripheralManager 사용해 bluetooth 블루투스 기능 활성 상태 확인]

https://blog.naver.com/kkh0977/223596292890?trackingCode=blog_bloghome_searchlist


[OperationQueue, @escaping 사용해 CBPeripheralManager 블루투스 활성 상태 응답 값 콜백 (callback) 확인]

https://blog.naver.com/kkh0977/223243876567?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------

 

반응형
Comments