by shigemk2

当面は技術的なことしか書かない

Swift × iPhone × Apple Watch で iBeacon を使う まとめ #fdev_shimane

Swift × iPhone × watchOS で iBeacon を使う

どういうことなの

  • Swift 説明不要のプログラミング言語
  • watchOS Apple Watchに搭載されているOS
  • iBeacon Appleが提供している近接検出技術
  • BLEを利用
  • CoreLocation.framefork

BLEとは

www.cypress.com

  • Bluetooth 4.0規格の一部
  • 超低電力

  • iBeaconとは、BLE技術を使った位置情報の技術

iBeaconでできること

  • 領域観測(Beaconが届く範囲を測定)
  • 距離観測(対象物が「遠い」か「近い」かを判定する UnknownからImmediteまでの4種類 具体的に何メートルかはわからん)

iBeaconでできないこと

  • Beaconの正確な距離
  • デバイスへデータを送信することはできない
  • Beaconの方向を検知する
  • あくまでも出来るのは電波を送信するだけ

なんで今さらBeacon?

導入事例がいくつかある

  • 店の近くを通ったらクーポン配信
  • 商品に近づいたら説明が届く
  • 出退勤管理

iseebi.hatenablog.com

iBeaconの識別

  • UUID(16Byte) 固定
  • Major(2Byte) ユーザ指定
  • Minor(2Byte) ユーザ指定

CoreLocationFrameWork

  • 位置情報関連をあつかうフレームワーク
  • CLLocationManager
  • CLBeaconRegion
  • CLBeacon

developer.apple.com

Swiftで実装してみる

  • 送信側 (Beacon)
  • 受信側 (iPhoneやApple Watch)
  • サーバ側

iBeaconアプリの仕組み

  • Beacon自体にデータを送信する仕組みはないので、送信するデバイス、受信するデバイス、データを管理するサーバ、の3つに別れる

注意点

  • 測定開始時にRegion内に居た場合はdidEnterRegionが呼ばれない didDetermineStateを使う
  • アプリがフォアグラウンド
  • 領域観測 距離観測
  • アプリがバックグラウンド
  • 領域観測のみ可能
  • 海外製のモジュールは技適が通っていない場合がある

まとめ

  • iBeaconアプリの開発は結構手軽
  • インフラ整備のほうが課題
  • WatchOS2で使い方が広がるかも