[我正在尝试修复在Android设备上运行我的应用程序(离子4)并监视信标区域时,我关闭设备蓝牙然后再次打开它时发生的错误。
此过程:
重要->带有setTimeout的丑陋解决方案-> 解决问题-> Here具有此解决方法的stackoverflow。
----------这里是我的信标对象
this.beaconsFromJson = [
{
identifier: 'Mini S/N 018727',
uuid: 'my-beacon-uuid',
major: 1,
minor: 18727,
notifyEntryStateOnDisplay: false
},
{
identifier: 'Mini S/N 018730',
uuid: 'my-beacon-uuid',
major: 1,
minor: 18730,
notifyEntryStateOnDisplay: false
}
];
----------这里是我的扫描功能
scan() {
_.forEach( this.beaconsFromJson, beacon => {
const beaconRegion = this.ibeacon.BeaconRegion(
beacon.identifier,
beacon.uuid,
beacon.major,
beacon.minor,
beacon.notifyEntryStateOnDisplay
)
this.ibeacon.startMonitoringForRegion(beaconRegion).then(
() => console.log('Start monitoring' + beaconRegion.identifier),
(error) =>
console.error('Native layer failed to begin monitoring: ', error)
);
}) // end foreach
setTimeout( () => {
this.delegate.didDetermineStateForRegion().subscribe((data: IBeaconPluginResult) => {
switch (data.state) {
case 'CLRegionStateInside':
this.beacons.push(data.region);
this.loadingService.loading$.next({status: false});
break;
case 'CLRegionStateOutside':
this.loadingService.loading$.next({status: false});
this.beacons = this.beacons.filter(beacon => beacon.identifier !== data.region.identifier);
break;
default:
break;
}
})
}, 1); // Ugly but it works --> https://stackoverflow.com/a/25211343/4197536
}
Nb:该脚本有效,但是我正在寻找更好的解决方案!
问题描述了此顺序:
预期最后一个项目符号点,因为监视已在第一个项目符号点中停止。为了获得didDetermineStateForRegion
回调,必须启动监视。