Apple Developer - Core Bluetooth
Apple Documentation - Core Bluetooth Programming Guide
Core Bluetooth란?
Apple에서 블루투스 기능을 제공하는 공용 프레임워크.
Central(중앙장치) ↔ Peripheral(주변장치) 연결
코드 작성을 시작하기 전, 앱에서 블루투스를 사용할 수 있도록 허용해주기 위해 Info-plist에 다음 키를 넣어주어야 한다.
iOS 13 이상일 경우
Key: Privacy – Bluetooth Always Usage Description
Value: User-facing description of why your app uses Bluetooth.
iOS 12 이하일 경우
Key: Privacy – Bluetooth Peripheral Usage Description
Value: User-facing description of why your app uses Bluetooth.
import CoreBluetooth
centralManagerDidUpdateState() : Bluetooth 주변 장치를 켜거나 끌 때 업데이트됩니다. 앱이 처음 시작될 때 실행되므로 Bluetooth 상태를 알 수 있습니다. 여기서도 스캔을 시작합니다.
avilable State
poweredOn : Bluetooth가 활성화되고 승인되었으며 앱 사용 준비가되었
powerOff – 사용자가 Bluetooth를 끄고 설정 또는 제어 센터에서 Bluetooth를 다시 켜야합니다.
.resetting – Bluetooth 서비스와의 연결이 중단되었습니다.
.unauthorized – 사용자가 블루투스 사용에 대한 앱 권한을 거부했습니다. 사용자는 앱의 설정 메뉴에서 다시 활성화해야합니다.
.unsupported – iOS 장치가 Bluetooth를 지원하지 않습니다.
unknown – 관리자의 상태와 앱의 Bluetooth 서비스 연결을 알 수 없습니다.
centralManager didDiscover 이벤트는 스캔 결과를받을 때 발생합니다. 이를 사용하여 연결을 시작
centralManager didConnect 장치가 연결되면 이벤트 화재. 여기서 장치 검색을 시작.
참고 : 장치 검색은 사용 가능한 서비스와 특성을 결정하는 방법입니다. 이것은 우리가 어떤 유형의 장치에 연결되어 있는지 확인하는 좋은 방법
peripheral didDiscoverServices이벤트는 먼저 모든 서비스는 발견 된 후. 우리가로 전환 한 것을 공지 centralManager에 peripheral지금 우리가 연결되어 있는지. 여기서 특징적인 발견을 시작
peripheral didDiscoverCharacteristicsFor 이벤트는 제공되는 서비스의 UUID를 사용하는 모든 특성을 제공
import UIKit
import CoreBluetooth
class BluetoothSettingViewController: UIViewController {
private var centralManager: CBCentralManager!
private var peripheral: CBPeripheral!
var connectedPeripheral: CBPeripheral?
override func viewDidLoad() {
super.viewDidLoad()
centralManager = CBCentralManager(delegate: self, queue: nil)
}
}
extension BluetoothSettingViewController: CBPeripheralDelegate, CBCentralManagerDelegate {
//블루투스가 켜진 상태인지 확인. 시스템의 Bluetooth 상태가 변경될 때마다 호출.
func centralManagerDidUpdateState(_ central: CBCentralManager) {
switch central .state {
case .poweredOn :
//startScan()
break
// case .poweredOff :
// // 사용자에게 블루투스를 켜도록 경고
// break
// case .unknown:
// // 다음 상태 업데이트를 기다립니다.
// break
// case .resetting:
// // 다음 상태 업데이트를 기다렸다가 Bluetooth 서비스 중단 로깅 고려
// break
// case .unsupported:
// // 사용자에게 기기가 블루투스를 지원하지 않으며 앱이 예상대로 작동하지 않음을 알립니다.
// break
// case .unauthorized:
// // 앱 설정에서 블루투스 권한을 사용하도록 사용자에게 알립니다.
// break
default:
break
}
}
//장치를 찾았을 때 실행되는 이벤트
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
}
//올바른 장치에 연결되었는지 확인
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
}
//
func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {
}
}
참고 : www.freecodecamp.org/news/ultimate-how-to-bluetooth-swift-with-hardware-in-20-minutes/
'초보 iOS 개발자의 일상 > 개발 업무' 카테고리의 다른 글
[Swift iOS] Alamofire 사용하여 Rest API 호출하기 Get / Post (0) | 2021.04.26 |
---|---|
[Swift iOS] Brother Print SDK 프린트 연결 및 라벨 인쇄하기 (0) | 2021.04.23 |
[Swift iOS] 바코드 인식 화면 Barcode / QR reader (0) | 2021.04.22 |
[Swift iOS] AppDelegate에서 window rootView Controller 설정하기 (0) | 2021.04.20 |
딥 링크란? + Firebase 이용한 Deep Link iOS (0) | 2021.04.20 |