我正在开发一个离子4应用程序,应该扫描和验证二维码索赔,使用PhoneGap插件BarcodeScanner。扫描工作正常,但我在验证二维码时遇到了困难。
我的想法是,只有当userID和PromotionID与二维码(在Firestore数据库中)匹配时,二维码才对用户有效。我正在使用文档ID生成QR代码,例如,QR代码‘075u6SGzsZ3tWq1v3Trb’和‘XXDzN47QXqsGZIMeySw0’只能由user123使用。
下面是实现
Example.page.ts:
qr: any;
scanQRCode () {
this.options= {
preferFrontCamera : false,
showFlipCameraButton : true,
showTorchButton:true,
disableSuccessBeep: false,
torchOn: false,
prompt: 'Scan your QRcode'
};
this.subscription = this.afs.collection('claims')
.snapshotChanges()
.subscribe(data => {
this.qr= data.map(e => {
return {
id: e.payload.doc.id,
promotionID: e.payload.doc.data()['promotion'],
userID: e.payload.doc.data()['user'],
};
})
console.log(this.item);
this.subscription.unsubscribe();
});
this.scanner.scan(this.options).then((data) => {
this.scannedData = data;
if(this.qr.promotionID && this.qr.userID == data){
this.navCtrl.navigateForward('/nextPage');
}else{
return this.presentAlert('Error','Invalid QRCODE')
}
}, (err) => {
console.log('Error: ',err);
})
}
Example.page.html
<ion-button expand="block" icon-left (click)="scanQRCode()"><ion-icon name="qr-scanner"></ion-icon>Scan code</ion-button>
我是离子和火基地的新手,任何想法或建议都将非常感谢。
谢谢。
发布于 2019-10-04 21:00:19
这有一系列的问题。
您可以定义扫描仪选项,但不要将它们传递给scan()
this.options= {
preferFrontCamera : true,
showFlipCameraButton : true,
showTorchButton:true,
disableSuccessBeep: false,
torchOn: false,
prompt: 'Scan your QRcode'
};
this.scanner.scan(this.options).then((data) => {
你.subscribe()
但没有列出一个.unsubscribe()
,这意味着有一个内存泄漏。
你没有在你发布的任何地方调用getUser()
- this.claim
是空的吗?
当你检查是否应该重定向到结果页面时,它不会在你扫描后测试this.scannedData
,它只是将用户的两个部分与this.claim.claimuser == this.claim.promoid
进行比较。
在您试图比较的部分中,claim.claimuser
永远不会存在,因为您将其映射到claim.user
。
我想它真的需要重新启动了,对不起。
https://stackoverflow.com/questions/58214034
复制相似问题