先日投稿した、「【Cordova】アプリでiBeaconを扱うための「cordova-plugin-ibeacon」が動作しない【未解決】」という記事の、解決策が見つかりました…!
解決策というより、原因はコードに一部抜けがあったせいなんですけどね!
早速ですが、正常に動作したコードはこちら!
// 位置情報を取得 cordova.plugins.locationManager.requestWhenInUseAuthorization(); cordova.plugins.notification.local.registerPermission(function (granted) { // console.log('Permission has been granted: ' + granted); }); // delegateの作成と設定 var delegate = new cordova.plugins.locationManager.Delegate(); delegate.didDetermineStateForRegion = function(pluginResult) { console.log('didDetermineStateForRegion', pluginResult); } delegate.didStartMonitoringForRegion = function(pluginResult) { console.log('didDetermineStateForRegion', pluginResult); } // ビーコンを検知している間呼ばれる delegate.didRangeBeaconsInRegion = function(pluginResult) { document.getElementById("rangeDiv").value = JSON.stringify(pluginResult); } // ビーコンをキャッチ delegate.didEnterRegion = function(pluginResult) { } // ビーコンの範囲外に移動 delegate.didExitRegion = function(pluginResult) { } // delegate の設定 cordova.plugins.locationManager.setDelegate(delegate); // 監視するビーコンの設定 var uuid = '00000000-1d4e-1001-b000-001c4dbec041'; var identifier = 'ibeacon'; var major = 1; var minor = 3; var beaconRegion = new cordova.plugins.locationManager.BeaconRegion(identifier, uuid, major, minor); beaconRegion.notifyEntryStateOnDisplay = true; // 監視の開始 cordova.plugins.locationManager.startRangingBeaconsInRegion(beaconRegion) .fail(function(e) { console.log(e); }) .done(); cordova.plugins.locationManager.startMonitoringForRegion(beaconRegion) .fail(function(e) { console.log(e); }) .done();
変更点は、49行目の下記の記述を追加した点です。
cordova.plugins.locationManager.startRangingBeaconsInRegion(beaconRegion) .fail(function(e) { console.log(e); }) .done();
様々なサンプルコードを見比べたところ、ここの記述が不足していました。
で、コードを追加したところ、問題なくビーコンの信号を取得できました!
というわけで、ただの私のポカミスだったわけです。
…凡ミスで恥ずかしい限りです。
今後は気を付けなければいけませんね。
ということで、以上、iBeaconを扱うための「cordova-plugin-ibeacon」が動作しない時の対処法でした。
可能であれば、きちんと動作するサンプルコードを改変してアプリ開発を行った方が安全かもしれません。