Я использую этот плагин в Nativescript, чтобы использовать Beacon со следующим кодом:
import {Observable} from 'tns-core-modules/data/observable';
import {
BeaconRegion, Beacon, BeaconCallback,
BeaconLocationOptions, BeaconLocationOptionsIOSAuthType, BeaconLocationOptionsAndroidAuthType
} from 'nativescript-ibeacon/nativescript-ibeacon.common';
import {NativescriptIbeacon} from 'nativescript-ibeacon';
export default class BeaconAdapter extends Observable implements BeaconCallback{
private nativescriptIbeacon: NativescriptIbeacon;
public message: string = 'Init';
private region: BeaconRegion = null;
constructor(id: string, uuid: string) {
super();
let options: BeaconLocationOptions = {
iOSAuthorisationType: BeaconLocationOptionsIOSAuthType.Always,
androidAuthorisationType: BeaconLocationOptionsAndroidAuthType.Fine,
androidAuthorisationDescription: 'Location permission needed'
};
this.nativescriptIbeacon = new NativescriptIbeacon(this, options);
this.region = new BeaconRegion(id, uuid, 100, 1);
}
start() {
this.message = 'start';
if (!this.nativescriptIbeacon.isAuthorised()) {
console.log('NOT Authorised');
this.nativescriptIbeacon.requestAuthorization()
.then(() => {
console.log('Authorised by the user');
this.nativescriptIbeacon.bind();
}, (e) => {
console.log('Authorisation denied by the user');
})
} else {
console.log('Already authorised');
this.nativescriptIbeacon.bind();
}
}
stop() {
this.message = 'stop';
this.nativescriptIbeacon.stopRanging(this.region);
this.nativescriptIbeacon.stopMonitoring(this.region);
this.nativescriptIbeacon.unbind();
}
onBeaconManagerReady(): void {
console.log('onBeaconManagerReady');
this.nativescriptIbeacon.startRanging(this.region);
this.nativescriptIbeacon.startMonitoring(this.region);
}
didRangeBeaconsInRegion(region: BeaconRegion, beacons: Beacon[]): void {
//console.log('didRangeBeaconsInRegion: ' + region.identifier + ' - ' + beacons.length);
//this.message = 'didRangeBeaconsInRegion: ' + (new Date().toDateString());
for (let beacon of beacons) {
console.log('B: ' + beacon.proximityUUID + ' - ' + beacon.major + ' - ' + beacon.minor + ' - ' + beacon.distance_proximity + ' - ' + beacon.rssi + ' - ' + beacon.txPower_accuracy );
}
}
didFailRangingBeaconsInRegion(region: BeaconRegion, errorCode: number, errorDescription: string): void {
console.log('didFailRangingBeaconsInRegion: ' + region.identifier + ' - ' + errorCode + ' - ' + errorDescription);
}
didEnterRegion(region: BeaconRegion) {
//console.log(region);
console.log('Did enter Region ' + region.identifier);
}
didExitRegion(region: BeaconRegion) {
//console.log(region);
console.log('Did leave Region ' + region.identifier);
}
}
Но когда он начинает мониторинг или ранжирование, не обнаруживает никаких устройств, даже когда я есть один излучающий рядом с устройством, на котором я тестирую
И другой вопрос, когда приложение работает в фоновом режиме, приложение вылетает с этой ошибкой (с использованием этого плагина)
Not разрешено запускать службу Приложение Intent находится в фоновом режиме uid UidRecord