スマホとBeacon(iBeacon) その3
前回はAndroidでの実装方法を記事にしましたので、
今回はiOSでの実装方法になります。
iOSはAndroidと違い、アップルが商標としてiBeaconとうたっているだけあって、公式のページが充実しています。
https://developer.apple.com/ibeacon/
最新情報(WWDC14の事等)もどんどんこちらのページに情報が掲載されています。
実装方法は、iOSではフレームワークが用意されているのでそちらを使いましょう
(というか使わないとiBeacon使えません!)
適当にプロジェクトを生成して「CoreLocation.framework」を参照に追加します。
参照追加したら、取り合えずviewDidLoad
あたりにビーコンの観測開始のソースを書きましょう。
CLLocationManager
等の変数はプロパティーあたりに定義している物としています。
if ([CLLocationManager isMonitoringAvailableForClass:[CLBeaconRegion class]]) {
_lm = [CLLocationManager new];
_lm.delegate = self;
_pUUID = [[NSUUID alloc] initWithUUIDString:ビーコンに設定されているUUID];
_beacon = [[CLBeaconRegion alloc] initWithProximityUUID:_pUUID identifier:@”testBeacon”];
[_lm startMonitoringForRegion:_beacon ];
}
あとはCLLocationManagerDelegate プロトコルのメソッドを実装すれば、
各種イベントを取得出来ます。
例えば
ビーコン範囲内への出入りを検知するのであれば
入 locationManager:didEnterRegion:
出 locationManager:didExitRegion:
で行う事が出来ます。
※ただし、既に範囲内に入っている状態の場合didEnterRegionは呼ばれないようです。
デリゲートメソッドにわたってくる、ビーコンの配列情報の中には、
ビーコンに関する情報がプロパティ値で入っており
識別子用のUUID、major番号、minor番号、ビーコンとの距離(4段階表記)、精度、受信強度
と言った値が取得出来ます。
以上でビーコンを取り合えず検出して、何かアクションを起こす所までは実装出来ます。
Androidとは違いフレームワークとして、
距離の検出等行ってくれる分、iOSの方が使いやすいと言うのが開発者としての意見でしょうか。
月曜担当SH
SH at 2014年07月22日 07:37:46