Tutorialチュートリアル
iBeaconの設定について
ビーコン情報設定ファイルについて
このファイルでは、端末が検出するビーコンの情報を設定できます。applican-config.xmlと同じディレクトリにbeacon-config.xmlという名前でファイルを配置します。ファイルの内容は以下のサンプルコードのような形になります。
サンプルコード
<?xml version="1.0" encoding="utf-8" ?> <beacon-config> <beacons> <beacon uuid="00000000-ABCD-1234-ABCD-01234567"> <local-notification> <retry-count>3</retry-count> <retry-interval-minutes>5</retry-interval-minutes> <reset-time>23:59</reset-time> <reset-interval-minutes>360</reset-interval-minutes> <conditions> <condition major="1"> <monitoring-range-meters to="5" /> <message lang="ja">検出1</message> <url>local://coupon1.html</url> </condition> <condition> <monitoring-range-meters from="10" to="15" /> <message lang="ja">検出2</message> <url>local://coupon2.html</url> </condition> </conditions> </local-notification> <history> <max-history>100</max-history> <interval-seconds>60</interval-seconds> <expired-days>90</expired-days> </history> </beacon> <beacon uuid="11111111-BCDE-4567-BCDE-76543210" major="1" minor="2"> <local-notification> <retry-count>3</retry-count> <retry-interval-minutes>2</retry-interval-minutes> <reset-time>23:59</reset-time> <reset-interval-minutes>10</reset-interval-minutes> <conditions> <condition> <monitoring-range-meters to="10" /> <message lang="ja">検出3</message> <url>local://coupon.html</url> </condition> </conditions> </local-notification> <history> <max-history>100</max-history> <interval-seconds>30</interval-seconds> <expired-days>90</expired-days> </history> </beacon> </beacons> </beacon-config>
beacon-configタグの中にbeaconsタグを準備し、その中にbeaconタグをネストしていくことで検出するビーコンの条件を追加できます。上記内容で検出されるビーコンは次の用になります。
UUID | MAJOR | MINOR | 距離 | 検出結果 | メッセージ |
---|---|---|---|---|---|
00000000-ABCD-1234-ABCD-01234567 | 1 | 1 | 10m | 〇 | 検出2 |
00000000-ABCD-1234-ABCD-01234567 | 1 | 1 | 5m | 〇 | 検出1 |
00000000-ABCD-1234-ABCD-01234567 | 2 | 1 | 5m | × | - |
00000000-ABCD-1234-ABCD-01234567 | 2 | 2 | 10m | 〇 | 検出2 |
11111111-BCDE-4567-BCDE-76543210 | 1 | 1 | 10m | × | - |
11111111-BCDE-4567-BCDE-76543210 | 1 | 2 | 10m | 〇 | 検出3 |
11111111-BCDE-4567-BCDE-76543210 | 1 | 2 | 5m | 〇 | 検出3 |
11111111-BCDE-4567-BCDE-76543210 | 1 | 2 | 15m | × | - |
11111111-BCDE-4567-BCDE-76543210 | 2 | 2 | 5m | × | - |
タグの説明
値 | 説明 | 必須 |
---|---|---|
beacon-config | ビーコン定義の開始します。 | 〇 |
beacons | 監視対象ビーコン群の定義。複数のbeaconタグを含めることができます。iOS API の制限により 20 個までしか指定できません。 | 〇 |
beacon @uuid=[UUID] @major=[メジャー番号] @minor=[マイナー番号] |
監視対象ビーコンの定義を開始します。majorは省略可能です。minorはmajorが指定された場合のみ省略可能です。 | 〇 |
local-notification | ローカル通知の配送定義を行います。省略するとローカル通知を行いません。 | - |
retry-count | ローカル通知配送後にユーザーがポップアップ経由で開かない場合、ここで指定した回数だけローカル通知を繰り返します。0を指定するとリトライしません。省略すると0が設定されます。 | - |
retry-interval-minutes | ローカル通知配送後にユーザーがポップアップ経由で開かない場合、ローカル通知を繰り返す間隔を指定します。 | - |
reset-time | ローカル通知のリトライ回数を元に戻す時刻を指定します。reset-interval-minutesタグも指定してされていた場合は、早く条件を満たした方が優先されます。省略すると次項reset-interval-minutesを参照します。 | - |
reset-interval-minutes | ローカル通知のリトライ回数を元に戻す間隔を指定します。reset-timeタグも指定してされていた場合は早い方が優先されます。0を指定するとリトライしません。省略すると0が設定されます。 | - |
conditions | ローカル通知配送条件定義。複数のconditionタグを指定できます。ただし、ビーコン発見範囲が重複している場合は、先に定義されている条件が優先されます。 | - |
condition @major=[メジャー番号] @minor=[マイナー番号] |
ローカル通知を行うビーコンの条件を指定します。majorおよびminorはbeaconタグで指定したビーコンをさらに絞り込む場合に使用します。majorは省略可能です。minorはmajorが指定された場合のみ省略可能です。 | - |
monitoring-range-meters @from=[開始] @to=[終了] |
ビーコンまで距離の範囲を指定します。fromおよびtoの単位はメートルを使用する。fromおよびtoは省略可能です。from省略時は0、to省略時は無限遠(検知限界まで)となります。 | - |
message | ローカル通知ポップアップ時に表示されるメッセージを定義します。 | - |
url | ローカル通知ポップアップを開くと表示されるURLを指定します。通知されるURLには以下のようなクエリーパラメーターが付加されます。 省略するとクエリーパラメーター部だけ付加された URL でアプリケーションが起動されます。 ?uuid=<UUID>&major=<MAJOR>&minor=<MINOR>&accuracy=<ACC>&rssi=<RSSI>&proximity=<PROX>&datetime=<DATE> その他にも、自由にパラメータを渡すことが出来ます。 ローカルファイルを開くときは、URLの開始を「local://」としてください。 |
- |
history | ビーコン履歴設定を定義します。省略すると履歴の記録を行いません。 | - |
max-history | ビーコン履歴最大保持数を指定します。省略すると履歴の記録を行いません。 | - |
interval-seconds | ビーコン履歴を記録する間隔を秒で指定します。0を指定すると約1秒おきに記録される(プラットフォーム依存)。省略すると0が設定されます。 | - |
expired-days | ビーコン履歴を保持する期間を日数で指定します。0を指定すると履歴の記録を行いません。省略すると0が設定されます | - |
バックグラウンドで通知を行う方法
サンプルコード
// Beacon APIの初期化 applican.beacon.init(initBeaconSuccess, initBeaconError); // 初期化成功 function initBeaconSuccess(){ var dump = "initBeaconSuccess"; console.log(dump); // 監視開始 applican.beacon.startMonitoring(startMonitoringSuccess, startMonitoringError); } // 初期化失敗 function initBeaconError(errror){ var dump = "beaconInitError\n"; dump += "code:" + error.code + "\n"; console.log(dump); } // 監視開始成功 function startMonitoringSuccess(){ var dump = "startMonitoringSuccess"; console.log(dump); } // 監視開始失敗 function startMonitoringError(error){ var dump = "beaconInitError\n"; dump += "code:" + error.code + "\n"; console.log(dump); }
アプリを開いた状態で通知を行う方法
サンプルコード
// 初期化成功 function initBeaconSuccess(){ var dump = "initBeaconSuccess"; console.log(dump); // 監視開始 applican.beacon.startMonitoring(startMonitoringSuccess, startMonitoringError); } // 初期化失敗 function initBeaconError(errror){ var dump = "beaconInitError\n"; dump += "code:" + error.code + "\n"; console.log(dump); } // 監視開始成功 function startMonitoringSuccess(){ var dump = "startMonitoringSuccess"; console.log(dump); // 監視するビーコンの情報 var beaconInfo = { uuid:'00000000-1111-AAAA-BBBB-012345678901'}; // アプリを開いた状態でビーコンの監視を開始。 var watchId = applican.beacon.watchBeacon(beaconInfo, watchBeaconResult, watchBeaconSuccess, watchBeaconError); } // 監視開始失敗 function startMonitoringError(error){ var dump = "beaconInitError\n"; dump += "code:" + error.code + "\n"; console.log(dump); } // 取得したビーコン情報。端末に依存しますがおよそ1秒ごとに取得されます。 function watchBeaconResult(beacon){ console.log("watchBeaconResult"); var uuid = beacon.uuid; // ビーコンの UUID var major = beacon.major; // ビーコンのメジャー番号 var minor = beacon.minor; // ビーコンのマイナー番号 var proximity = beacon.proximity; // 距離の精度(0:不明, 1:至近距離, 2:近距離, 3:遠距離) var accuracy = beacon.accuracy; // ビーコンまでの距離(メートル) var rssi = beacon.rssi; // 受信信号強度(dBm) var dump = "watchBeaconResult:\n"; dump += "uuid : " + uuid + "\n"; dump += "major : " + major + "\n"; dump += "minor : " + minor + "\n"; dump += "proximity : " + proximity + "\n"; dump += "accuracy : " + accuracy + "\n"; dump += "rssi : " + rssi + "\n"; console.log(dump); } // アプリを開いた状態で監視開始成功 function watchBeaconSuccess(){ var dump = "beaconWatchBeaconSuccess"; console.log(dump); } // アプリを開いた状態で監視開始失敗 function watchBeaconError(error){ var dump = "beaconWatchBeaconError\n"; dump += "code:" + error.code + "\n"; console.log(dump); }