Notice
Recent Posts
Recent Comments
Link
투케이2K
130. (TWOK/LOGIC) [Ios] 블루투스 BLE GATT 클라이언트에서 서버 연결 수행 로직 정리 - Bluetooth Gatt connect 본문
투케이2K 로직정리
130. (TWOK/LOGIC) [Ios] 블루투스 BLE GATT 클라이언트에서 서버 연결 수행 로직 정리 - Bluetooth Gatt connect
투케이2K 2025. 1. 1. 16:26[로직 정리]
정리 로직 : Ios / 아이폰
상태 : [Ios] 블루투스 BLE GATT 클라이언트에서 서버 연결 수행 로직 정리 - Bluetooth Gatt connect
[설 명]
// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------
- Ios Bluetooth GATT 연결을 위한 퍼미션 권한 설정 :
/**
* // -----------------------------------------------------------------
* 1. 필요 퍼미션 권한 설정 : 블루투스 사용 권한
*
* - Privacy - Bluetooth Always Usage Description
* - Privacy - Bluetooth Peripheral Usage Description
* // -----------------------------------------------------------------
* 2. 필요 import 호출 선언 :
*
* - import CoreBluetooth
* - import UIKit
* // -----------------------------------------------------------------
* 3. 참고 사항 :
*
* - 블루투스 GATT 연결을 하기 위해서는 사전 페어링이 되어 있어야합니다 (클라이언트 To 서버)
* - 서버 연결 시 블루투스 Name 값을 기준으로 찾는다
* - 클라이언트와 서버 연결을 위해서는 ServiceUUID , CharacteristicUUID 값이 일치해야합니다
* // -----------------------------------------------------------------
* */
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[로직 설명]
// --------------------------------------------------------------------------------------
1. 애플리케이션 수행 및 블루투스 BLE Gatt 를 연결할 수 있는 클라이언트 액티비티 화면 진입
>> 사전) 위치 , 블루투스 관련 퍼미션 권한 부여 상태 확인 및 권한 부여 필요
>> 사전) ServiceUUID , CharacteristicUUID 값은 서버와 클라이언트가 서로 동일하게 설정이 필요
2. 연결하려는 장비와 페어링 되어 있지 않은 경우는 [휴대폰 설정] 화면 진입 >> [블루투스] >> [특정 장치 수동 페어링] 등록 수행 실시
3. 정상적으로 페어링 된 경우 블루투스 장치 스캔 수행 실시
4. 블루투스 스캔에서 특정 Name 이 스캔 된 경우 >> BluetoothCentralManager?.connect(peripheral, options: nil) 블루투스 연결 수행 실시
>> 특정 블루투스 Name 이 스캔이 되지 않은 경우 무한정 대기할 수 없으므로 15초 ~ 20초 스캔 타임 아웃 필요
>> 특정 Name 은 소스코드에서 전역변수로 선언해 블루투스 실시간 스캔 시 Name 값 비교 필요
5. 블루투스 connect 연결 수행 실시 후 >> CBCentralManager didConnect 정상적으로 연결이 완료 된 경우 Peripheral?.discoverServices([self.targetServiceUUID]) 특정 타겟 UUID 찾기 서비스 등록 수행
>> 블루투스 연결이 실패한 경우 CBCentralManager didFailToConnect 에서 콜백 응답 확인 후 연결 실패 응답 반환
6. 특정 타겟 UUID 찾기가 완료 된 경우 >> CBPeripheral didDiscoverServices 부분에서 peripheral.discoverCharacteristics([self.targetCharacteristicUUID], for: service) 특정 캐릭터 UUID 찾기 서비스 등록 수행
7. CBPeripheral didDiscoverCharacteristicsFor 콜백 이벤트 함수에서 특정 캐릭터 UUID 값 찾기가 완료 된 경우 >> 블루투스 GATT 읽기, 쓰기 요청 수행 실시
>> 블루투스 GATT 읽기 및 쓰기 응답 결과는 [읽기 - CBPeripheral didUpdateValueFor] / [쓰기 - CBPeripheral didWriteValueFor] 에서 확인 수행
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
https://support.apple.com/ko-kr/guide/security/sec82597d97e/web
https://blog.naver.com/kkh0977/223687745202
https://blog.naver.com/kkh0977/223690092317
// --------------------------------------------------------------------------------------
반응형
'투케이2K 로직정리' 카테고리의 다른 글
Comments