아이비콘에 대해서.
지금은 아이비콘이지만 앞으로도 보급될 가능성이 있다고 생각합니다...
아이비콘이 뭐예요?
iBeacon 사용 시 필요한 조건
실시
비콘 모니터링 시작
비콘 모니터링 시작 locationManager = CLLocationManager()
locationManager.delegate = self
//iBeaconは位置情報「常に利用」の許可が必要なのでrequestAlwaysAuthorization()が必要。info.plistにもNSLocationAlwaysUsageDescriptionを追加しておく。
if locationManager.respondsToSelector("requestAlwaysAuthorization") {
locationManager.requestAlwaysAuthorization()
}
//ビーコン領域を生成
let uuidString = "EBEFD083-70A2-47C8-9837-E7B5634DF524"
let beaconIdentifier = "sample_iBeacon"
let beaconUUID = NSUUID(UUIDString: uuidString)!
let beaconRegion = CLBeaconRegion(proximityUUID: beaconUUID,
identifier: beaconIdentifier)
//let beaconRegion = CLBeaconRegion(proximityUUID: beaconUUID, major: 3, minor: 1, identifier: beaconIdentifier)
//beacon領域に入ったときのdelegateからの通知がいらないときはfalse。defaultはtrue
//beaconRegion.notifyOnEntry = false
//beacon領域に入ったときのdelegateからの通知がいらないときはfalse。defaultはtrue
//beaconRegion.notifyOnExit = false
//iPhoneのロック解除ボタンが押されて、ロック中画面が表示されたときにBeaconの状態(内側にいるか外側にいるか)を確認するかどうか。defaultはfalse
beaconRegion.notifyEntryStateOnDisplay = true
//Beaconの領域IN/OUTの監視開始
//これで、locationManager:didEnterRegion や
//locationManager:didExitRegionが通知される(アプリが起動していない時でも)
//「uuidString/major/minorの組み合わせ」をbeaconRegionに指定する。
//20個のbeaconRegionオブジェクトを監視可能
locationManager.startMonitoringForRegion(beaconRegion)
locationManager = CLLocationManager()
locationManager.delegate = self
//iBeaconは位置情報「常に利用」の許可が必要なのでrequestAlwaysAuthorization()が必要。info.plistにもNSLocationAlwaysUsageDescriptionを追加しておく。
if locationManager.respondsToSelector("requestAlwaysAuthorization") {
locationManager.requestAlwaysAuthorization()
}
//ビーコン領域を生成
let uuidString = "EBEFD083-70A2-47C8-9837-E7B5634DF524"
let beaconIdentifier = "sample_iBeacon"
let beaconUUID = NSUUID(UUIDString: uuidString)!
let beaconRegion = CLBeaconRegion(proximityUUID: beaconUUID,
identifier: beaconIdentifier)
//let beaconRegion = CLBeaconRegion(proximityUUID: beaconUUID, major: 3, minor: 1, identifier: beaconIdentifier)
//beacon領域に入ったときのdelegateからの通知がいらないときはfalse。defaultはtrue
//beaconRegion.notifyOnEntry = false
//beacon領域に入ったときのdelegateからの通知がいらないときはfalse。defaultはtrue
//beaconRegion.notifyOnExit = false
//iPhoneのロック解除ボタンが押されて、ロック中画面が表示されたときにBeaconの状態(内側にいるか外側にいるか)を確認するかどうか。defaultはfalse
beaconRegion.notifyEntryStateOnDisplay = true
//Beaconの領域IN/OUTの監視開始
//これで、locationManager:didEnterRegion や
//locationManager:didExitRegionが通知される(アプリが起動していない時でも)
//「uuidString/major/minorの組み合わせ」をbeaconRegionに指定する。
//20個のbeaconRegionオブジェクトを監視可能
locationManager.startMonitoringForRegion(beaconRegion)
비콘 영역 감지 IN/OUT
/**
* beaconの領域に入った
*/
func locationManager(manager: CLLocationManager,
didEnterRegion region: CLRegion) {
manager.startRangingBeaconsInRegion(region as! CLBeaconRegion)
manager.startUpdatingLocation()
//結構感度が良い
}
/**
* beaconの領域から出た
*/
func locationManager(manager: CLLocationManager,
didExitRegion region: CLRegion) {
//didEnterRegionに比べて感度が悪い
}
/**
* beaconRegion.notifyEntryStateOnDisplay = true時に、iPhoneのロック解除ボタンが押されて、ロック中画面が表示された時、コールされる。
*/
func locationManager(manager: CLLocationManager,
didDetermineState state: CLRegionState,
forRegion region: CLRegion) {
//現在、対象Beaconの内側/外側/どちらかかわらないかが、stateで取得できる
}
비콘 영역 IN/OUT 오류 감지
비콘 영역 IN/OUT 오류 감지
/**
* beacon監視でエラー。
*/
func locationManager(manager: CLLocationManager, monitoringDidFailForRegion region: CLRegion?, withError error: NSError) {
//ex) 監視するbeaconが無効、beaconを21種類以上登録した場合など
}
비콘 데이터 수신 시작
비콘 데이터 수신 시작
locationManager.delegate = self
//Beaconデータの受信開始。Beaconデータ(CLBeacon)には
//uuid/major/minor/CLProximity(すぐ近く/近い/遠い)/rssi(信号強度)が入っている
locationManager.startRangingBeaconsInRegion(beaconRegion)
Beacon 데이터 수신 감지
/**
* Beaconデータ受信処理
*/
func locationManager(manager: CLLocationManager,
didRangeBeacons beacons: [CLBeacon],
inRegion region: CLBeaconRegion) {
//Beaconデータ受信時は何度もコールされる。CLBeaconにはuuid/major/minor/CLProximity(すぐ近く/近い/遠い)/rssi(信号強度) が入っている
//Beacon範囲に入っている時はbeaconsリストにCLBeaconオブジェクトが入っているが、
//Beacon範囲から出てもしばらくbeaconsリストが空でコールされる。
}
Beacon 데이터 수신 오류 감지
Beacon 데이터 수신 오류 감지
func locationManager(manager: CLLocationManager,
rangingBeaconsDidFailForRegion region: CLBeaconRegion,
withError error: NSError) {
//beaconデータ受信でエラー。
//ex) 監視するbeaconが無効など
}
좋은 곳
스마트폰 EC 랩http://smartphone-ec.net/
GPS를 이용한 지역 관측에 비해 아이폰의 배터리 소모가 적다
안 좋은 점.
총결산
Reference
이 문제에 관하여(아이비콘에 대해서.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hs7/items/79d758394e838022e08c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)