Я пытаюсь заставить этот плагин работать.
https://github.com/petermetz/cordova-plugin-ibeacon
Я использую Cordova cli v8.
Я использую Jaalee iBeacon: https://www.jaalee.com/store
iB004-N plus
Я могу получить доступ к этому маяку с помощью приложения производителя (eBeacon для iOS) и получить его звуковой сигнал. У меня есть UUID, старшие и младшие номера.
Когда я запускаю плагин здесь, он работает без каких-либо ошибок, но массив маяков всегда пуст, даже если маяк сидит на моем столе рядом с моим телефоном Android 7.
Bluetooth включен, iBeacon подал звуковой сигнал сегодня, местоположение включено, и у приложения есть разрешение на использование местоположения.
Редактировать: я пробовал это на iOS, и это работает, но не на Android.
Вот мой код:
app.js
var identifier = 'jaalee';
var uuid = 'ebefd083-70a2-47c8-9837-e7b5634df524';
var minor = 1;
var major = 1;
var beaconRegion = null;
var app = {
// Application Constructor
initialize: function() {
document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
document.getElementById("start").addEventListener("click", start);
document.getElementById("stop").addEventListener("click", stop);
},
// deviceready Event Handler
//
// Bind any cordova events here. Common events are:
// 'pause', 'resume', etc.
onDeviceReady: function() {
this.receivedEvent('deviceready');
},
// Update DOM on a Received Event
receivedEvent: function(id) {
var parentElement = document.getElementById(id);
var listeningElement = parentElement.querySelector('.listening');
var receivedElement = parentElement.querySelector('.received');
listeningElement.setAttribute('style', 'display:none;');
receivedElement.setAttribute('style', 'display:block;');
console.log('Received Event: ' + id);
beaconRegion = new cordova.plugins.locationManager.BeaconRegion(identifier, uuid, major, minor);
console.log(' beaconRegion ', beaconRegion);
}
};
app.initialize();
function logToDom(message) {
var e = document.createElement('label');
e.innerText = message;
var br = document.createElement('br');
var br2 = document.createElement('br');
document.body.appendChild(e);
document.body.appendChild(br);
document.body.appendChild(br2);
window.scrollTo(0, window.document.height);
}
function start() {
console.log(' start ');
var delegate = new cordova.plugins.locationManager.Delegate();
delegate.didDetermineStateForRegion = function (pluginResult) {
console.log('didDetermineStateForRegion: ', pluginResult);
logToDom('[DOM] didDetermineStateForRegion: ' + JSON.stringify(pluginResult));
cordova.plugins.locationManager.appendToDeviceLog('[DOM] didDetermineStateForRegion: '
+ JSON.stringify(pluginResult));
};
delegate.didStartMonitoringForRegion = function (pluginResult) {
console.log('didStartMonitoringForRegion:', pluginResult);
logToDom('didStartMonitoringForRegion:' + JSON.stringify(pluginResult));
};
delegate.didRangeBeaconsInRegion = function (pluginResult) {
console.log('didRangeBeaconsInRegion: ', pluginResult);
logToDom('[DOM] didRangeBeaconsInRegion: ' + JSON.stringify(pluginResult));
};
cordova.plugins.locationManager.setDelegate(delegate);
// required in iOS 8+
cordova.plugins.locationManager.requestWhenInUseAuthorization();
// or cordova.plugins.locationManager.requestAlwaysAuthorization()
console.log(' beaconRegion ', beaconRegion);
cordova.plugins.locationManager.startRangingBeaconsInRegion(beaconRegion)
.fail(function(e) { console.log(e); })
.done();
}
function stop() {
console.log(' stop ');
cordova.plugins.locationManager.stopRangingBeaconsInRegion(beaconRegion)
.fail(function(e) { console.log(e); })
.done();
}
index.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
<link rel="stylesheet" type="text/css" href="css/index.css">
<title>Hello World</title>
</head>
<body>
<div class="app">
<h1>Apache Cordova</h1>
<div id="deviceready" class="blink">
<p class="event listening">Connecting to Device</p>
<p class="event received">Device is Ready</p>
</div>
<button id="start">start</button>
<button id="stop">stop</button>
</div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
</body>
</html>