探索插件用法的最佳方式是检查我们的演示应用程序。您可以从中下载我们的演示应用程序这里。
下载后,导航到demo应用的根文件夹并运行demo应用:
cd cmbSDK_Nativescript/demo tns运行android或ios
简而言之,在你的项目中使用我们的插件的步骤如下:
从'cmbsdk-nativescript'导入{CMBReader, CMBReaderConstants};
开放home-view-model.ts从Demo应用程序查看此代码。我们的演示应用程序中的所有代码都是简短的描述。
this.cmb.startScanning ()
重要的
使用cmbSDK原生脚本插件MX设备是免费的,但如果你想使用摄像头设备(用智能手机摄像头扫描),你需要从CMBDN.
Reader仍然可以在没有许可证的情况下工作,但是结果被随机地用*字符掩盖了。
它可以免费注册,您可以获得30天的试用许可证密钥。
获得密钥后,有两种方法可用于应用程序。
this.cmbReader.registerSDK(“SKD_KEY”);
要让扫描器启动并运行,首先要做的就是调用loadScanner()方法。它需要一个CMBReaderConstants。DEVICE_TYPE参数。此方法不连接阅读器设备。我们需要打电话连接()在回调中连接Reader设备
this.cmb.loadscanner(cmbreaderconstants.device_type.mxReader).then(结果=> {this.cmb.connect().then(结果=> {...}).catch(err => {console.log(错误);});});
/* @return (promise) {status: boolean,如果连接成功,则为true如果不是false err: string,如果状态为false err将不为null} */
connect()方法的结果作为承诺返回,它将包含连接尝试的结果:
This.cmb.connect () .then(result =>{…}) .catch(err => {console.log(err);});
ReaderDevice的连接状态有一个事件侦听器,即CMBReaderConstants.EVENTS.ConnectionStateChanged事件,下面将对其进行更详细的解释。
/*@return(promise){status:boolean,if disconnect successed true if not false err:string,if status false err not null}*/
就像有连接(),有一个断开()与之相反的方法连接():
这个.cmb.disconnect();
类似于连接(),断开()也会触发CMBReaderConstants.EVENTS.ConnectionStateChanged事件。
/*扫描程序活动的@return Promise(bool)值(如果命令成功,则为true,否则为false,例如:如果readerDevice未初始化)*/
为了启动/停止扫描过程,我们使用以下方法。它们返回一个承诺,如果命令成功(扫描已开始或停止)或被拒绝(如果没有激活的ReaderDevice初始化或未连接),则将解决该承诺。
启动扫描仪并扫描条形码后,扫描结果触发CMBReaderConstants.EVENTS.ReadResultReceived事件。
一旦与阅读器建立了连接,我们就可以通过调用setSymbologyEnabled ().它需要三个参数:一个CMBReaderConstants。SYMBOLOGY是启用或禁用的符号,以及ON/OFF的布尔值。
this.cmb.setSymbologyEnabled (CMBReaderConstants.SYMBOLOGY。function (result) {if (result == true) console.log("启用了DataMatrix ");else console.log("DataMatrix NOT enabled");}) .catch(function (err) {console.log(err);});
要检查我们是否启用了符号,我们使用isSymbologyEnabled().它需要参数cmbreaderconstants.symbology。
cmb.isSymbologyEnabled (CMBReaderConstants.SYMBOLOGY.QR)。then(function (result) {if (result == true) console.log("启用了DataMatrix ");else console.log("DataMatrix NOT enabled");}) .catch(function (err) {console.log(err);});
/* @return (promise) {status: boolean,如果成功执行了命令err: string,则为true,如果状态为false,则err将不为null} */
如果我们想启用闪光灯,我们可以使用setLightsOn ().它期望一个争论布尔并返回承诺。
/* @return (promise) {status: boolean,如果灯亮则为true,否则为false,如果出现错误(例如reader未初始化)}*/
我们可以使用Islialson()检查灯光状态,返回承诺。
/** @return使用CMBReaderConstants解析的承诺。当前读取器设备的CONNECTION_STATE值*/
如果需要获取当前连接状态,getConnectionState()可以使用
this.cmb.getConnectionState()。然后(函数(connectionstate){if(connectionstate == cmbreaderconstants.connection_state.connected){// reader已连接}});
这只应仅在使用相机内置的设备以进行扫描时使用(cmbreaderconstants.device_type.camera)。
这个函数需要一个整型参数,它是我们想要启用的所有预览选项的OR-ed结果的结果。
this.cmb.setPreviewOptions (CMBReaderConstants.CAMERA_PREVIEW_OPTION。NoZoomBtn | CMBReaderConstants.CAMERA_PREVIEW_OPTION.NoIllumBtn);
注意:PreviewOptions应该在我们调用之前设置loadScanner()为了生效。
这只应仅在使用相机内置的设备以进行扫描时使用(cmbreaderconstants.device_type.camera)。
this.cmb.setPreviewContainerPositionAndsize([0,0,100,50]);//将预览设置为0,0和100%宽度50%高度
这只应仅在使用相机内置的设备以进行扫描时使用(cmbreaderconstants.device_type.camera)。
将相机预览设置为全屏而不是局部视图。
this.cmb.setPreviewContainerFullScreen ();
用于启用/禁用图像结果类型。期望一个布尔参数。
此.cmb.enableImage(真);
用于启用/禁用SVG结果类型。期望一个布尔参数。
this.cmb.enableImageGraphics(真正的);
启用或禁用对扫描条形码的解析。需要一个CMBReaderConstants.RESULT_PARSER类型的参数。
this.cmb.setParser (CMBReaderConstants.RESULT_PARSER.GS1);
设置readString结果类型的编码。需要一个CMBReaderConstants.READSTRING_ENCODING类型的参数。
this.cmb.setReadStringEncoding (CMBReaderConstants.READSTRING_ENCODING.UTF_8);
/*@return(promise){value:int err:string,如果出现错误(例如读卡器未初始化)}*/
方法显示所连接设备的电池水平。不接受任何论点。
仅适用于iOS系统。
用于创建用于MDM报告的身份验证凭据。它接受四个字符串参数:用户名、密码、clientID和clientSecret。
应该在setMDMReportingEnabled之前调用。
有关MDM报告的更多信息可以找到这里
this.cmb。createMDMAuthCredentials("username", "password", "clientID", "clientSecret");
仅适用于iOS系统。
拥有和运营多个康耐视移动终端的公司可能希望远程收集有关电池电量、电池运行状况、已安装固件等的最新信息。
使用cmbSDK框架的iOS应用可以将附加的移动终端状态信息上报给MDM实例。这可以通过setMDMReportingEnabled方法启用,该方法接受一个布尔参数。
有关MDM报告的更多信息可以找到这里
this.cmb.setMDMReportingEnabled(true);
/* @return (promise) {range: JSON对象,包含以下属性:"lower":相机曝光最小值"upper":相机曝光最大值"step":相机曝光步长值err: string, in case of error (e.g. reader not initialized)} */
cmb.getCameraExposureCompensationRange()。然后(function (range) {console.log(range);}) .catch(function (err) {console.log(err);});
注:相机需要在cmbSDK内至少启动一次才能获得相机曝光补偿范围,否则将返回空json。
设置相机曝光补偿值。发送将设置为曝光补偿的浮点值。
setCameraExposureCompensation(5).catch(函数(err){console.log(err);});
注:这需要在成功连接到读卡器设备后调用。若发送的值大于相机曝光最大值,则设置最大值;若发送的值小于相机曝光最小值,则设置最小值。
CMBSDK插件发出可在应用程序中使用的事件。
首先,创建事件发射器:
导入NativeModules.nativePentemitter;Const ScannerListener =新的NativeEventemitter(CMB);
然后为您要处理的每个事件添加侦听器:
this.cmb.on(CMBReaderConstants.EVENTS.AVAILABILITY已更改,(args:any)=>{if(args.data==CMBReaderConstants.AVAILABILITY.AVAILABILITY){this.cmb.connect();}else{dialogs.alert({消息:“设备不可用”,okButtonText:“确定”});});
以下是cmbSDK插件可以发出的所有事件:
CMBReaderConstants.EVENT.ReadResultReceived CMBReaderConstants.EVENT.AvailabilityChanged CMBReaderConstants.EVENT.ConnectionStateChanged CMBReaderConstants.EVENT.ScanningStateChanged