探索插件用法的最好方法是查看我们的演示应用程序。您可以从下载我们的演示应用程序在这里
下载后,导航到demo应用的根文件夹并运行demo应用:
cd cmbSDK_Nativescript/demo tns运行android #或ios
简而言之,在项目中使用我们的插件,这里有以下步骤:
从'cmbsdk-nativescript'导入{CMBReader, CMBReaderConstants};
开放home-view-model.ts从Demo应用程序查看此代码。我们的演示应用程序中的所有代码都是简短的描述。
this.cmb.startScanning ()
重要的
使用MX设备的CMBSDK NativeScript插件的使用是免费的,但如果要利用相机设备(使用智能手机相机扫描),则需要获取许可证CMBDN.
Reader仍然可以在没有许可证的情况下工作,但是结果被随机地用*字符掩盖了。
免费注册,您可以获得30天试用许可证密钥。
获得密钥后,有两种方法可以在应用程序中使用。
this.cmbReader.registerSDK(“SKD_KEY”);
要获得扫描仪并运行,首先要做,就是打电话给loadScanner ()方法。它需要一个CMBReaderConstants。DEVICE_TYPE参数。此方法不连接阅读器设备。我们需要打电话connect ()在回调中连接Reader设备
this.cmb.loadScanner(CMBReaderConstants.DEVICE_TYPE.MXReader).then(result=>{this.cmb.connect().then(result=>{…}).catch(err=>{console.log(err);});});
/* @return (promise) {status: boolean,如果连接成功,则为true如果不是false err: string,如果状态为false err将不为null} */
connect()方法的结果作为Promise返回,它将包含连接尝试的结果:
this.cmb.connect().then(结果=> {...}).catch(err => {console.log(错误);});
有一个事件监听器用于ReaderDevice的连接状态,即cmbreaderconstants.Events.ConnectionStateChanged.事件将在下面进行更详细的解释。
/* @return (promise) {status: boolean, if disconnect succeeded true if not false err: string, if status false err将不为null} */
正如有connect (),有一个断开()与之相反的方法connect ():
this.cmb.disconnect ();
类似于connect (),断开()也引发了cmbreaderconstants.Events.ConnectionStateChanged.事件
/* @return Scanner Activity的Promise (bool)值(如果命令成功则为true,否则为false) */
启动/停止扫描过程,我们使用这些方法。它们返回一个承诺,如果命令成功(扫描已经开始或停止),这个承诺将被解析,否则将被拒绝(如果没有初始化活动的ReaderDevice或未连接)。
启动扫描仪并扫描条形码后,扫描结果触发cmbreaderconstants.Events.ReadResultreceived事件
一旦与Reader建立了连接,我们就可以通过调用SetyymbologyEnabled().它需要三个参数:一个CMBReaderConstants。SYMBOLOGY是启用或禁用的符号,以及ON/OFF的布尔值。
this.cmb.setsymbologyenabled(cmbreaderconstants.symbology.datamatrix,true).then(函数(结果){if(结果== true)console.log(启用“dataMatrix”); else console.log(“dataMatrix未启用”);}).catch(函数(err){console.log(错误);});
为了检查是否启用了符号,我们使用isSymbologyEnabled ().它需要参数cmbreaderconstants.symbology。
cmb.issymbologyenabled(cmbreaderconstants.symbology.qr)。然后(函数(结果){if(结果== true)console.log(启用“dataMatrix”); else console.log(“dataMatrix未启用”);})。catch(函数(err){console.log(错误);});
/* @return (promise) {status: boolean,如果成功执行了命令err: string,则为true,如果状态为false,则err将不为null} */
如果我们想启用闪光灯,我们可以使用setLightsOn (). 它需要一个布尔参数并返回一个承诺。
/ * @return(承诺){status:boolean,如果灯亮则为true,否则错误:字符串,在错误(例如reader未初始化)} * /
我们可以使用isLightsOn()检查灯光状态,它返回一个承诺。
/** @return使用CMBReaderConstants解析的承诺。当前读取器设备的CONNECTION_STATE值*/
如果需要获取当前连接状态,getConnectionState()可以使用
this.cmb.getConnectionState()。然后(函数(connectionstate){if(connectionstate == cmbreaderconstants.connection_state.connected){// reader已连接}});
仅当使用设备的内置摄像头进行扫描(CMBReaderConstants.device\u TYPE.camera)时,才应使用此选项。
这个函数需要一个整型参数,它是我们想要启用的所有预览选项的OR-ed结果的结果。
this.cmb.setPreviewOptions (CMBReaderConstants.CAMERA_PREVIEW_OPTION。NoZoomBtn | CMBReaderConstants.CAMERA_PREVIEW_OPTION.NoIllumBtn);
注意:PreviewOptions应该在我们调用之前设置loadScanner ()让它生效。
仅当使用设备的内置摄像头进行扫描(CMBReaderConstants.device\u TYPE.camera)时,才应使用此选项。
this.cmb.setPreviewContainerPositionAndsize([0,0,100,50]);//将预览设置为0,0和100%宽度50%高度
仅当使用设备的内置摄像头进行扫描(CMBReaderConstants.device\u TYPE.camera)时,才应使用此选项。
将相机预览设置为全屏而不是局部视图。
this.cmb.setPreviewContainerFullScreen ();
用于启用/禁用图像结果类型。期待一个布尔的论点。
this.cmb.enableImage(真正的);
用于启用/禁用svg结果类型。需要一个布尔参数。
this.cmb.EnableImageGraphics(真实);
启用或禁用对扫描条形码的解析。需要一个CMBReaderConstants.RESULT_PARSER类型的参数。
this.cmb.setParser (CMBReaderConstants.RESULT_PARSER.GS1);
设置读取结果类型的编码。期待CMBreaderConstants.readString_Encoding类型的一个参数。
this.cmb.setReadStringEncoding (CMBReaderConstants.READSTRING_ENCODING.UTF_8);
/* @return (promise) {value: int err: string,在错误的情况下(例如,reader未初始化)}*/
方法显示所连接设备的电池水平。不接受任何论点。
仅适用于iOS。
用于创建用于MDM报告的身份验证凭据。它接受四个字符串参数:用户名、密码、clientID和clientSecret。
应该在setMDMReportingEnabled之前调用。
可以找到更多关于MDM报告在这里
this.cmb。createMDMAuthCredentials("username", "password", "clientID", "clientSecret");
仅适用于iOS。
拥有和操作许多可康生移动终端可能希望远程收集有关电池电量,电池运行状况,安装固件等的最新信息。
使用CMBSDK框架的IOS应用程序可以将附加的移动终端的状态信息报告给MDM实例。可以使用leasemdmreporting的方法启用,该方法接受一个布尔参数。
可以找到更多关于MDM报告在这里
this.cmb.setMDMReportingEnabled(真正的);
cmbSDK插件发出可在应用程序中使用的事件。
首先,创建事件发射器:
导入NativeModules.NativeEventMitter;const scannerListener=新的国家通信局(cmb);
然后为要处理的每个事件添加侦听器:
this.cmb.on (CMBReaderConstants.EVENTS。AvailabilityChanged, (args: any) => {data == cmbreaderconstants . availabilityavailable) {this. cmbread .connect();} else{对话框。alert({消息:"设备不可用",okButtonText: "OK"});} });
以下是CMBSDK插件可以发出的所有事件:
CMBReaderConstants.EVENT.ReadResultReceived CMBReaderConstants.EVENT.AvailabilityChanged CMBReaderConstants.EVENT.ConnectionStateChanged CMBReaderConstants.EVENT.ScanningStateChanged