了解该插件用法的最佳方法是查看我们的演示应用程序。您可以从在这里。
下载后导航到演示应用程序根文件夹并运行演示应用程序:
cd cmbSDK_Nativescript/demo运行android #或ios
简而言之,在你的项目中使用我们的插件有以下步骤:
import {CMBReader, CMBReaderConstants} from 'cmbsdk-nativescript';
开放home-view-model.ts从演示应用程序检查这段代码。我们的演示应用程序中的所有代码都有简短的描述。
this.cmb.startScanning ()
重要的
使用MX设备使用cmbSDK nativescript插件是免费的,但如果您想使用CAMERA device(使用智能手机摄像头扫描),您需要从CMBDN.
Reader仍然在没有许可证的情况下工作,但结果会被随机地用*字符掩盖。
它是免费注册的,你可以获得一个30天的试用许可证密钥。
获得密钥后,在应用程序中有两种使用方法。
this.cmbReader.registerSDK(“SKD_KEY”);
要启动并运行扫描仪,首先要做的是调用loadScanner ()方法。它需要一个CMBReaderConstants。DEVICE_TYPE参数。此方法不连接到阅读器设备。我们需要打电话connect ()在回调中实际连接到阅读器设备
this.cmb.loadScanner(CMBReaderConstants.DEVICE_TYPE.MXReader) .then(result => {this.cmb.connect() .then(result =>{…}) .catch(err => {console.log(err);});});
/* @返回(承诺){状态:布尔值,如果连接成功则为true,如果不为false err:字符串,如果状态为false err将不为null} */
connect()方法的结果作为Promise返回,它将包含连接尝试的结果:
This.cmb.connect () .then(result =>{…}) .catch(err => {console.log(err);});
ReaderDevice的连接状态有一个事件侦听器,即CMBReaderConstants.EVENTS.ConnectionStateChanged事件,下面将更详细地解释。
/* @返回(承诺){状态:布尔值,如果断开连接成功则为true,如果不为false err:字符串,如果状态为false err将不为null} */
就像这样connect (),有一个断开()的相反方法connect ():
this.cmb.disconnect ();
类似于connect (),断开()还会触发CMBReaderConstants.EVENTS.ConnectionStateChanged事件。
/* @返回Scanner Activity的Promise (bool)值(如果命令成功则为true,否则为false,例如:如果readerDevice未初始化)*/
要启动/停止扫描过程,我们使用以下方法。它们返回一个承诺,如果命令成功(扫描已经开始或停止)或拒绝(如果没有初始化的活动ReaderDevice或没有连接),将解析这个承诺。
启动扫描仪并扫描条形码后,扫描结果将触发CMBReaderConstants.EVENTS.ReadResultReceived事件。
一旦有了到Reader的连接,我们就可以通过调用来启用符号setSymbologyEnabled ().它需要三个参数:CMBReaderConstants。symbolology是要启用或禁用的符号,是ON/OFF的布尔值。
this.cmb.setSymbologyEnabled (CMBReaderConstants.SYMBOLOGY。DataMatrix, true) .then(function (result) {if (result == true) console.log("DataMatrix enabled");else console.log("DataMatrix未启用");}) .catch(函数(err) {console.log(err);});
要检查是否启用了某个符号,可以使用isSymbologyEnabled ().它接受参数cmbreaderconstants . symbolology。
cmb.isSymbologyEnabled (CMBReaderConstants.SYMBOLOGY.QR)。then(function (result) {if (result == true) console.log("DataMatrix enabled");else console.log("DataMatrix未启用");}) .catch(函数(err) {console.log(err);});
/* @返回(承诺){状态:布尔值,如果执行成功则为true err:字符串,如果状态为false则err将不为null} */
如果我们想要启用flash,我们可以使用setLightsOn ().它期望一个参数布尔值,并返回一个promise。
/* @返回(承诺){状态:布尔值,灯亮时为true,否则为false err:字符串,如果出现错误(例如阅读器未初始化)}*/
我们可以使用isLightsOn()检查灯光状态,它返回一个承诺。
用CMBReaderConstants解析的promise。当前读写器的CONNECTION_STATE值*/
如果需要获取当前连接状态,getConnectionState ()可以使用
this.cmb.getConnectionState().then(function(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, 0100, 50]);//将设置预览为0,0和100%宽度50%高度
这应该只在使用设备内置的摄像头进行扫描时使用(CMBReaderConstants.DEVICE_TYPE.Camera)。
将相机预览设置为全屏而不是局部视图。
this.cmb.setPreviewContainerFullScreen ();
用于启用/禁用图像结果类型。期望一个布尔参数。
this.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);
/* @返回(承诺){值:int err:字符串,如果出现错误(例如阅读器未初始化)}*/
方法显示连接设备的电池电量。不带任何参数。
仅支持iOS。
用于创建用于MDM报告的身份验证凭据。它接受四个字符串参数:用户名、密码、clientID和clientSecret。
应该在setMDMReportingEnabled之前调用。
关于MDM报告的更多信息可以在这里找到在这里
this.cmb。createMDMAuthCredentials("username", "password", " cliententid ", "clientSecret");
仅支持iOS。
拥有并运营多个康耐视移动终端的公司可能希望远程收集有关电池电量、电池健康状况、已安装固件等的最新信息。
iOS应用使用cmbSDK框架,可以向MDM实例报告连接的移动终端的状态信息。这可以通过setMDMReportingEnabled方法启用,该方法接受一个布尔参数。
关于MDM报告的更多信息可以在这里找到在这里
this.cmb.setMDMReportingEnabled(真正的);
/* @返回(承诺){范围:具有这些属性的JSON对象"lower":最小相机曝光值"upper":最大相机曝光值"step":相机曝光步长值err:字符串,如果出现错误(例如阅读器未初始化)}*/
cmb.getCameraExposureCompensationRange()。然后(function (range) {console.log(range);}) .catch(函数(err) {console.log(err);});
注意:相机需要在cmbSDK内启动至少一次,以获得相机曝光补偿范围,否则将返回空json。
设置相机曝光补偿值。发送将被设置为曝光补偿的浮动值。
cmb.setCameraExposureCompensation(5) .catch(function (err) {console.log(err);});
注意:这需要在成功连接到阅读器设备后调用。如果发送的值大于相机曝光最大值,将设置最大值,如果发送的值小于相机曝光最小值,将设置最小值。
cmbSDK插件发出可以在应用程序中使用的事件。
首先,创建事件发射器:
进口NativeModules.NativeEventEmitter;const scannerListener = new NativeEventEmitter(cmb);
然后为你想要处理的每个事件添加监听器:
this.cmb.on (CMBReaderConstants.EVENTS。AvailabilityChanged,(参数:any) => {if(参数:any)data == cmbreaderconstants . available . available) {this.cmb.connect();} else{对话框。alert({message: "Device was unavailable", okButtonText: "OK"});}});
以下是cmbSDK插件可以触发的所有事件:
CMBReaderConstants.EVENT.AvailabilityChanged CMBReaderConstants.EVENT.ConnectionStateChanged CMBReaderConstants.EVENT.ScanningStateChanged