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で使い方が広がるかも