【Cordova】iBeaconを扱うための「cordova-plugin-ibeacon」が動作しない時の対処法

村上 著者:村上

【Cordova】iBeaconを扱うための「cordova-plugin-ibeacon」が動作しない時の対処法

先日投稿した、「【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」が動作しない時の対処法でした。
可能であれば、きちんと動作するサンプルコードを改変してアプリ開発を行った方が安全かもしれません。

  • この記事いいね! (0)

著者について

村上

村上 administrator