在您需要的任何提供程序/页面顶部使用“霍尼韦尔”就足够了,无需修改 app.module.ts,它不是 Angular 可以处理的依赖项。
declare let Honeywell: any;
但是我创建了一个 TypeScript 文件来存根方法并调用插件
import { Injectable } from '@angular/core';
import { IonicNativePlugin } from '@ionic-native/core';
declare let Honeywell: any;
@Injectable()
export class HoneywellBarcodeScanner extends IonicNativePlugin {
onLog(success, error, args?): Promise<any> {
return Honeywell.onLog(success, error, args);
}
onBarcodeEvent(success, error, args?): Promise<any> {
return Honeywell.onBarcodeEvent(success, error, args);
}
onFailureEvent(success, error, args?): Promise<any> {
return Honeywell.onFailureEvent(success, error, args);
}
barcodeReaderPressSoftwareTrigger(success, error, args?): Promise<any> {
return Honeywell.barcodeReaderPressSoftwareTrigger(success, error, args);
}
}
如果您有兴趣,我会模拟要与 Ionic Serve 一起使用的插件(选择模拟的条形码并调用条形码扫描事件),这是一个完整的示例(使用 3 种类型的条形码扫描仪,linea、honeywell 和相机)@987654321 @
honeywell-barcode-scanner.mock.ts
import { HoneywellBarcodeScanner } from './../plugin-interfaces/honeywell-barcode-scanner';
export class HoneywellBarcodeScannerMock extends HoneywellBarcodeScanner {
onLog(): Promise<any> {
return new Promise((resolve, reject) => {
resolve();
});
}
onBarcodeEvent(): Promise<any> {
return new Promise((resolve, reject) => {
resolve();
});
}
onFailureEvent(): Promise<any> {
return new Promise((resolve, reject) => {
resolve();
});
}
barcodeReaderPressSoftwareTrigger(): Promise<any> {
return new Promise((resolve, reject) => {
resolve();
});
}
}
插件工厂.ts
import { Platform } from "ionic-angular/platform/platform";
import { AlertController } from "ionic-angular";
import { HoneywellBarcodeScanner } from "./honeywell-barcode-scanner";
import { HoneywellBarcodeScannerMock } from "./../mocks/honeywell-barcode-scanner.mock";
let isMobile = (platform: Platform): boolean => {
return platform.is('ios') || platform.is('android');
}
export let PluginFactories = {
honeywellBarcodeScannerFactory: (platform: Platform) => {
return isMobile(platform) ? new HoneywellBarcodeScanner() : new HoneywellBarcodeScannerMock();
}
}
然后在 app.module.ts 中
providers: [
{
provide: HoneywellBarcodeScanner,
useFactory: PluginFactories.honeywellBarcodeScannerFactory,
deps: [Platform]
},
]