Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- IOS
- Git
- 웹뷰
- rxswift
- stack
- appstore
- github
- MacOS
- Xcode
- geofencing
- Realm
- mac
- 개발자
- Archive
- Swift
- Firebase
- window
- error
- view
- darkmode
- FLUTTER
- SwiftUI
- 한글
- Notification
- Session
- iOS16
- UIButton
- Code
- JPA
- Apple
Archives
- Today
- Total
EEYatHo 앱 깎는 이야기
Document ) iOS 기기를 iBeacon 기기로 전환 본문
반응형
개요
- Bluetooth low energy를 사용하여 데이터 공유를 지원하는 모든 iOS 기기는 iBeacon으로 전환할 수 있음
- 기본 iOS 기기를 iBeacon으로 사용하는 앱은 포그라운드에서 실행되어야함
- 이 기능을 POS 앱이나 어차피 포그라운드에서 실행되도록 의도된 앱에 사용
- 다른 유형의 iBeacon 구현의 경우 타사 제조업체의 전용 비콘 하드웨어를 사용합니다
- 다음 과정을 따르면됨
- 장치에 대한 128비트 UUID를 얻거나 생성합니다.
- 적합한 major, minor 값과 UUID 값을 포함하는 CLBeaconRegion객체를 생성합니다.
- CoreBluetooth 프레임워크를 사용하여 비콘 정보를 알립니다.
기기의 UUID 생성
- iBeacon을 식별하는 주요 방법은 UUID
- 하나 이상의 비콘을 배포할 때, 클라이언트에게 비콘의 목적을 전달하는 UUID를 할당합니다
- 비콘의 정확한 목적은 사용자가 정의하는 것 입니다.
- 예를 들어, 백화점 체인은 배포된 모든 비콘에 동일한 UUID를 사용하거나 각 매장에 다른 UUID를 할당할 수 있습니다.
- 감지에는 특정 UUID가 있는 비콘을 찾기 위해 지역 모니터링을 사용하므로 UUID를 적게 사용하면 관리하기가 더 쉽습니다.
- iBeacon 배포를 위한 새 UUID를 만들려면 uuidgen명령줄 도구를 사용합니다.
- Terminal을 열고 uuidgen명령줄에 입력하고 Return을 누릅니다.
$ uuidgen 39ED98FF-2900-441A-802F-9C398FC199D2
- 이 도구는 고유한 128비트 값을 생성하고 이를 하이픈으로 구분된 ASCII 문자열로 포맷합니다
비콘 지역 구성
- CLBeaconRegion 객체를 사용하여 비콘의 ID를 구성합니다
- 비콘 영역을 사용하여 나중에 Bluetooth를 통해 광고할 수 있는 정보 사전을 생성합니다.
func createBeaconRegion() -> CLBeaconRegion? {
let proximityUUID = UUID(uuidString: "39ED98FF-2900-441A-802F-9C398FC199D2")
let major: CLBeaconMajorValue = 100
let minor: CLBeaconMinorValue = 1
let beaconID = "com.example.myDeviceRegion"
return CLBeaconRegion(proximityUUID: proximityUUID!,
major: major, minor: minor, identifier: beaconID)
}
블루투스 비콘 알림(advertsing)
- iOS 기기에서 비콘의 ID를 브로드캐스트하려면 Core Bluetooth 프레임워크를 사용하여 iOS 기기를 Bluetooth 주변 기기로 구성합니다.
- 주변 기기로 구성하면 iOS 기기가 Bluetooth 하드웨어를 사용하여 비콘 정보를 다른 기기로 브로드캐스트합니다.
- 다른 기기는 해당 정보를 사용하여 범위 측정을 수행하고 iOS 기기와의 근접성을 감지합니다.
- Xcode 프로젝트에 Core Bluetooth 프레임워크를 추가합니다.
- 코드에서 CBPeripheralManager객체를 만들고 startAdvertising(_:)를 호출하여 비콘 데이터를 브로드캐스팅하기 시작합니다.
- startAdvertising(_:) 메서드는 비콘 정보가 포함된 딕셔너리 매개변수를 사용합니다.
- 이전에 만든 CLBeaconRegion에서 peripheralData(withMeasuredPower:)메서드를 호출하여, 비콘과 관련된 데이터가 포함된 사전을 가져옵니다.
func advertiseDevice(region : CLBeaconRegion) {
let peripheral = CBPeripheralManager(delegate: self, queue: nil)
let peripheralData = region.peripheralData(withMeasuredPower: nil)
peripheral.startAdvertising(((peripheralData as NSDictionary) as! [String : Any]))
}
- 데이터 딕셔너리를 얻기 위해 peripheralData(withMeasuredPower:)메서드를 호출할 때, 일반적으로 iOS 기기와 관련된 기본 수신 신호 강도 표시기(RSSI) 값을 지정하기 위해 전달합니다.
- withMeasuredPower는 기기에서 1m 떨어진 곳에서 측정한 신호 강도(데시벨)를 나타냅니다.
- 특정 환경에서 더 나은 범위 성능을 위해 기기를 보정해야 하는 경우 사용자 지정 값을 지정할 수 있습니다.
- 주변 장치 관리자 객체를 만들면, 해당 객체의 대리자 객체의 peripheralManagerDidUpdateState(_:)메서드를 호출합니다.
- Bluetooth low energy가 지원되고 iOS 기기에서 사용할 수 있도록 하려면 이 대리자 메서드를 구현해야 합니다.
중요
- 앱을 비콘으로 광고한 후, 앱은 필요한 블루투스 신호를 브로드캐스트하기 위해 포그라운드에서 계속 실행되어야 합니다.
- 사용자가 앱을 종료하면 시스템은 블루투스를 통해 기기를 주변 기기로 광고하는 것을 중단합니다.
범위 지정 중에 Core Location이 동일한 iOS 기기에 대해 두 개의 CLBeacon객체를 생성하는 짧은 기간이 있을 수 있습니다.
- 이 동작은 iOS가 사용자의 개인 정보를 보호하기 위해 기기의 Bluetooth 식별자를 주기적으로 변경하고, 한 비콘이 이전 식별자를 나타내고 다른 비콘이 새 식별자를 나타내기 때문에 발생합니다.
- 식별자가 변경된 후 2초 이내에 이전 식별자가 있는 비콘의 근접성 속성이 CLProximity.unknown로 설정됩니다 . 10초 이내에 이전 식별자가 있는 비콘은 더 이상 보고되지 않습니다.
'iOS, Swift > WWDC, Session, Docu' 카테고리의 다른 글
Document ) iBeacon 장치와의 근접성 확인 (iBeacon 장치 감지, 거리 확인, +앱살리기) (0) | 2024.11.15 |
---|---|
WWDC19 ) CoreLocation 새로운 소식 (iOS13) (3) | 2024.11.14 |
WWDC23 ) 간소화된 location updates 알아보기 (1) | 2024.11.14 |
Document ) Core Location Monitor 소개 (1) | 2024.11.01 |
Document ) 지리적 지역 근접성 Monitoring (1) | 2024.11.01 |
Comments