Эта проблема возникла из-за слишком чувствительной метки NFC.
Когда я помещаю тег NFC один раз, тогда слишком много значений вводятся на мгновение.
Таким образом, если введено одно значение тега NFC, то необходимо остановить прослушиватель событий NFC в этот момент. Как мне это реализовать?
Я думаю, что скорость чтения NFC между устройством и меткой NFC настолько высока, чем отмена EventListener на стороне программы.
эта ионная страница работает так ...
* 1) Первая загрузка ionViewDidEnter ()
2) Добавить addListenNFC ()
3) Если помечен NFC, то значение отправить в onNfcLogin (tagId)
4) В onNfcLogin (tagId) это включено "Поставщик почтового сервиса Http" как userService.nfclogin ()
5) Наконец, получите возвращение типа json со стороны сервера. *
{
"зависимости": {
«ионно-нативный / ядро»: «4.7.0»,
«ионно-угловой»: «3.9.2»,
"машинопись": "~ 2.6.2"]
},
«тестовое устройство»: «Galaxy8»,
«NFC Tag»: «дешевый NFC-флешка»
}
ionViewDidEnter() {
this.nfc.enabled().then((resolve) => {
this.addListenNFC();
}).catch((reject) => {
alert("NFC is not supported by your Device");
});
}
addListenNFC() {
this.nfc.addTagDiscoveredListener().subscribe(data => {
//window.removeEventListener; //this is not working.
if (data && data.tag && data.tag.id) {
this.tagId = this.nfc.bytesToHexString(data.tag.id);
if (this.tagId) {
this.scanned = true;
this.onNfcLogin(this.tagId);
} else {
alert('NFC_NOT_DETECTED');
}
}
});
}
onNfcLogin(tagId) {
this.userService.nfclogin(tagId).subscribe(data => {
// "this.userService.nfclogin()" is at Http post service provider
this.getData = JSON.stringify(data);
if (this.getData) {
this.granted = true;
this.loading.dismiss();
this.events.publish('user:login');
this.navCtrl.setRoot(HomePage);
}
this.resetScanData;
},
error => {
this.loading.dismiss();
this.showError(error);
});
}
showError(error) {
console.log(error);
let alert = this.alertCtrl.create({
title: 'Login Error',
message: error.json().message,
buttons: ['OK']
});
alert.present();
}
resetScanData() {
this.granted = false;
this.scanned = false;
this.tagId = "";
}