Tutorialチュートリアル
iBeaconの設定について
アプリカンで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);
}