【发布时间】:2017-05-09 02:33:13
【问题描述】:
我关注了this tutorial,它概述了在 Ionic 2 应用程序中添加监控信标。我让它工作得很好:当视图加载时,它会初始化并开始监听信标:
home.ts
ionViewDidLoad() {
this.platform.ready().then(() => {
this.beaconProvider.initialise().then((isInitialised) => {
if (isInitialised) {
this.listenToBeaconEvents();
}
});
});
}
这会调用listenToBeaconEvents 函数,该函数会在视图中使用所有信标填充列表:
home.ts
listenToBeaconEvents() {
this.events.subscribe(‘didRangeBeaconsInRegion’, (data) => {
// update the UI with the beacon list
this.zone.run(() => {
this.beacons = [];
let beaconList = data.beacons;
beaconList.forEach((beacon) => {
let beaconObject = new BeaconModel(beacon);
this.beacons.push(beaconObject);
});
});
});
}
我可以使用this.beaconProvider.stopRanging() 来停止测距,该this.beaconProvider.stopRanging() 从以下函数调用函数:
beacon-provider.ts
stopRanging() {
if (this.platform.is('cordova')) {
// stop ranging
this.ibeacon.stopRangingBeaconsInRegion(this.region)
.then(
() => {
console.log('Stopped Ranging');
},
error => {
console.error('Failed to stop monitoring: ', error);
}
);
}
}
我遇到的问题是 - 在原始教程中,信标列表显示在根部,没有其他导航。我已将其移至不同的视图,如果用户退出并重新进入视图,它会重新初始化并加载所有内容,从而导致重复的列表条目。
我尝试在 beacon-provider.ts 中创建一个函数以在视图退出之前调用,但我不知道如何防止订阅/事件重复。
我尝试过this.delegate.didRangeBeaconsInRegion().unsubscribe() 和其他一些变体,但它们都会导致运行时错误。
【问题讨论】:
标签: ionic-framework ionic2 ibeacon