아이비콘에 대해서.

나는 예전에 학습회에서 차근차근 발표한 아이비콘을 쓸 것이다.
지금은 아이비콘이지만 앞으로도 보급될 가능성이 있다고 생각합니다...

아이비콘이 뭐예요?

  • 비콘이라고 불리는 발신기에서 나오는 블루투스 저에너지(BLE) 신호를 수신하는 기능.
  • 인근 상점에 통지하는 쿠폰과 상품 정보 등.
  • iBeacon 사용 시 필요한 조건

  • 비콘 머신(aplix,estimote,Gimbal 등)
  • 1개에 300엔~3000엔 정도
  • 아이폰과 Mac도 가능
  • iOS7 이상
  • 블루투스를 탑재한 아이폰/iPad/iPod 등
  • 항상 위치 정보 사용 허용
  • 실시


    비콘 모니터링 시작


    비콘 모니터링 시작
            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.startMonitoringForRegion()을 실행하면 아래의 "테스트 비콘 영역 IN/OUT(delegate)"가 프로그램을 시작하지 않아도 리셋됩니다.
  • 비콘 영역 감지 IN/OUT

  • 프로그램을 시작하지 않아도 리셋됩니다.이 때, App Delegate의didfinish Launching With Options를 호출한 후, 아래의delegate 방법을 리셋합니다.
  • 비콘 영역 감지 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)
    
  • locationManager.startRanging Beacons InRegion () 을 진행한 후, 아래의 "검측 Beacon 데이터 수신"은 프로그램을 시작할 때만 리셋됩니다.
  • Beacon 데이터 수신 감지

  • 이것은 응용 프로그램을 시작할 때만 리셋됩니다.
  • 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를 이용한 지역 관측에 비해 아이폰의 배터리 소모가 적다
  • 비콘 기계도 건전지 2개가 있고 거의 모든 것이 1년 이상 있다.
  • 안 좋은 점.

  • 아이폰이 전원을 연결한 후 1~5분 정도 비콘을 검출할 수 없는 시간이 있다.
  • 비콘 구역 OUT의 검출이 느리기 때문에 일찍 검출하려면 노력이 필요하다.
  • 과 비콘 데이터 수신 검측에서 수신 데이터가 비어 있을 때 조합 등
  • 총결산

  • 은 상당히 간단하다(블루투스 통신은 프레임워크에 봉인된다).
  • 프로그램을 시작하지 않아도 시작할 수 있는 트리거가 많습니다(Beacon IN/OUT 검사, 화면 표시 잠금 시).
  • 일본 아이비콘 서비스도 천천히 나와서 앞으로 보급?
  • 좋은 웹페이지 즐겨찾기