Swift × iPhone × watchOS で iBeacon を使う
どういうことなの
- Swift 説明不要のプログラミング言語
- watchOS Apple Watchに搭載されているOS
- iBeacon Appleが提供している近接検出技術
- BLEを利用
- CoreLocation.framefork
BLEとは
- Bluetooth 4.0規格の一部
超低電力
iBeaconとは、BLE技術を使った位置情報の技術
iBeaconでできること
- 領域観測(Beaconが届く範囲を測定)
- 距離観測(対象物が「遠い」か「近い」かを判定する UnknownからImmediteまでの4種類 具体的に何メートルかはわからん)
iBeaconでできないこと
- Beaconの正確な距離
- デバイスへデータを送信することはできない
- Beaconの方向を検知する
- あくまでも出来るのは電波を送信するだけ
なんで今さらBeacon?
導入事例がいくつかある
- 店の近くを通ったらクーポン配信
- 商品に近づいたら説明が届く
- 出退勤管理
iBeaconの識別
- UUID(16Byte) 固定
- Major(2Byte) ユーザ指定
- Minor(2Byte) ユーザ指定
CoreLocationFrameWork
- 位置情報関連をあつかうフレームワーク
- CLLocationManager
- CLBeaconRegion
- CLBeacon
Swiftで実装してみる
- 送信側 (Beacon)
- 受信側 (iPhoneやApple Watch)
- サーバ側
iBeaconアプリの仕組み
- Beacon自体にデータを送信する仕組みはないので、送信するデバイス、受信するデバイス、データを管理するサーバ、の3つに別れる
注意点
- 測定開始時にRegion内に居た場合はdidEnterRegionが呼ばれない didDetermineStateを使う
- アプリがフォアグラウンド
- 領域観測 距離観測
- アプリがバックグラウンド
- 領域観測のみ可能
- 海外製のモジュールは技適が通っていない場合がある
まとめ
- iBeaconアプリの開発は結構手軽
- インフラ整備のほうが課題
- WatchOS2で使い方が広がるかも