Почему didenterregion срабатывает несколько раз, даже когда я уже в этом районе маяка? - PullRequest
0 голосов
/ 18 мая 2018

Я добавил одну область маяка для мониторинга. Я использую метод didenterregion, чтобы определить, когда он входит в область маяка, но дело даже в том, что я уже нахожусь в области маяка, тогда я также получаю многократный сигнал didenterregion.помогите мне, почему это происходит?

`

@ Injectable () класс экспорта BeaconProvider {

delegate: any;
region: any;

constructor(public platform: Platform, public events: Events,public IBeacon:IBeacon,public appService:AppService) {
}

initialise(): any {

         let promise = new Promise((resolve, reject) => {

        if (this.platform.is('cordova')) {

            // Request permission to use location on iOS
            this.IBeacon.requestAlwaysAuthorization();  
            this.IBeacon.getMonitoredRegions().then(data=>{
                console.log(data);
            });
            this.IBeacon.getRangedRegions().then(data=>{
                console.log(data);
            });


            this.delegate = this.IBeacon.Delegate();



            // Subscribe to some of the delegate's event handlers
            this.delegate.didEnterRegion()
            .subscribe(
                data => {
                    this.events.publish('this.delegate.didEnterRegion', data);
                },
                error => console.error()
                );
            this.delegate.didExitRegion()
            .subscribe(
                data => {
                    this.events.publish('this.delegate.didExitRegion', data);
                },
                error => console.error()
                );


            this.appService.getBeacons()
            .subscribe(beacons => {
                console.log(beacons);
                var i=0;
                for(i=0;i<beacons.length;i++){
                    // setup a beacon region – CHANGE THIS TO YOUR OWN UUID
                    this.region = this.IBeacon.BeaconRegion(beacons[i].beaconDetailes.beaconId,beacons[i].beaconDetailes.uuid,beacons[i].beaconDetailes.major,beacons[i].beaconDetailes.minor);
                    this.region.NotifyEntryStateOnDisplay = true;
                    this.region.NotifyOnEntry = true;
                    this.region.NotifyOnExit = true;

                    // start ranging
                    this.IBeacon.startMonitoringForRegion(this.region)
                    .then(
                        () => {
                            resolve(true);
                            console.log("monitor for region");
                        },
                        error => {

                            resolve(false);
                        }
                        );


                    }
                }
                );

        } else {

            resolve(false);
        }
    });

    return promise;
}

}

` Это поставщик длямонитор маяка. На некоторых других страницах я запускаю метод инициализации, чтобы зарегистрировать маяк и начать мониторинг маяков. При публикации событий я получаю информацию о маяке, когда я вхожу в регион на других страницах.

...