複数のiBeaconの状態変更を NSNotificationに変換して通知するライブラリです。 主に以下の2つの機能があります。
- 各Beaconの状態変更を通知
- 「一番近くにあるBeacon」が変化すれば通知
複数のBeaconを指定して、各Beaconごとに、
- 範囲に入った(IN)
- 範囲から出た(OUT)
- 遠くにいる(FAR)
- 近くにいる(NEAR)
という状態の変化を NSNotification として通知します。
各BeaconのUUIDを同一にしてあれば、そのBeaconの中で最も近くにあるBeaconがどれかという通知を出します。
もし、異なるUUIDであれば、1番目のBeaconのUUIDと同じBeacon群の中で最も近いBeaconについて通知を出します。
To run the example project; clone the repo, and run pod install
from the Example directory first.
Please see, Example/IBeaconNotifierExample/{GRTAppDelegate.m,GRTExampleViewController.m}
iBeaconNotifier is available through CocoaPods, to install it simply add the following line to your Podfile:
platform :ios, '5.0'
pod "iBeaconNotifier", :git => 'https://github.com/mokemokechicken/iBeaconNotifier.git'
まず、利用するBeaconをTSV形式でします。
例えば、下記のような beacon.tsv
をBundleしておきます。
このTSVは「1行目が列名」「2行目以降がデータ」です。
各列の意味は以下のようになります。
- id: Beaconの識別子。このBeaconIDがNSNotificationに含まれます。
- uuid: iBeaconのUUID
- major: iBeaconの major の値
- minor: iBeaconの minor の値
例:
id uuid major minor
BeaconA 00000000-04B1-1001-B000-001C4D153904 1 4
BeaconB 00000000-04B1-1001-B000-001C4D153904 0 2
BeaconC 00000000-04B1-1001-B000-001C4D153904 1 3
まず、
#import "IBNBeaconService.h"
をimportします。
Beacon監視を開始するには以下のようにします。
// start beacon service
self.beaconService = [IBNBeaconService createWithFilename:@"beacon.tsv" bundle:nil];
[self.beaconService start];
IBNBeaconService
のインスタンスは、どこかで保持しておいてください。
あとは任意のコードで、beaconのイベントをNSNotificationCenterを経由して受け取ることができます。
まず、定数定義されているヘッダファイルをimportします。
#import "IBNBeaconServiceConst.h"
IBN_CHANGE_BEACON_STATE
の Notification を Observeします。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleEvent:)
name:IBN_CHANGE_BEACON_STATE
object:nil];
イベントハンドラでは、 以下の情報をが取得できます。
- どのBeaconか:
note.userInfo[IBN_BEACON_ID]
- 前述の
beacon.tsv
で指定したid
の文字列が入ります
- 前述の
- どの状態になったか:
note.userInfo[IBN_BEACON_STATE]
- 以下のどれかが入ります
- 範囲に入った(IN):
IBN_BEACON_STATE_INSIDE
- 範囲から出た(OUT):
IBN_BEACON_STATE_OUTSIDE
- 遠くにいる(FAR):
IBN_BEACON_STATE_FAR
- 近くにいる(NEAR):
IBN_BEACON_STATE_NEAR
IBN_CHANGE_NEAREST_BEACON
の Notification を Observe します。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleEvent:)
name:IBN_CHANGE_NEAREST_BEACON
object:nil];
イベントハンドラでは、 以下の情報をが取得できます。
- どのBeaconが一番近くになったか:
note.userInfo[IBN_BEACON_ID]
- 前述の
beacon.tsv
で指定したid
の文字列が入ります - もし、近くに一つも無ければ(全て範囲外に出たら)、
NsNull
が入ってきます。
- 前述の
Ken Morishita, [email protected]
iBeaconNotifier is available under the MIT license. See the LICENSE file for more info.