通过npm下载插件
$ NPM安装CMBSDK-React-Native -Save
主要是自动安装
$react native链接cmbsdk react native
通过添加以下内容导入react本机应用程序中的组件
从'cmbsdk-react-native'中导入{CMBReader, cmb};
您可以通过以下方式访问所有API方法招商银行CMBreader类中可以使用常量,所有枚举和常量都可用。
在继续之前,请从下载部分下载cmbSDK React本机zip文件,并参阅API参考。
下载页面:https://cmbdn.cognex.com/download
API参考:https://cmbdn.cognex.com/knowledge/reacont-nat/rct-api-metho.
确保您已从我们的下载页面下载了cmbSDK React Native zip存档。从下载的zip文件中,打开iOS目录。
1.如果您使用的是Mobile中内置的移动设备,请与IOS / Resources目录中的“mwbscannerimages.xcasset”文件执行相同。必威随行版官网
2.在您的项目信息。plist文件,你需要添加一个关键字,这取决于你使用的readerDevice类型。
就是这样。你应该能够在cmbSDK react-native模块工作的情况下运行你的应用程序。
确保您已从我们的下载页面下载了cmbSDK React Native zip存档。从下载的zip文件中,打开Android/cmbSDK Android二进制目录。
1.打开yourrnapp / android / app /目录中,创建一个名为“libs”的新文件夹(如果还没有),然后打开它。将文件“cmbsdklib release.aar”放在libs文件夹中。此aar可在下载的zip文件的“Android/cmbsdk Android binary”中找到
2.打开位于的App Build.gradleyourRNApp / android应用程序并添加这些行:
- 依赖项上面添加了这个:
存储库{flatDir{dirs'libs'}
3.构建开放。它坐落在yourRNApp/android并将minsdkversion更改为19或以上
就是这样。你应该能够在cmbSDK react-native模块工作的情况下运行你的应用程序。
要获得扫描仪并运行,首先要做,就是打电话给loadScanner ()方法。它需要一个CMBReader。DEVICE_TYPE参数。此方法不连接阅读器设备。我们需要打电话连接()在回调中连接Reader设备
cmb.loadScanner(cmbread . device_type . mxreader).then((response) => {cmb.getAvailability().then((response) => {if (response == cmbread . availability . available) {connectReader();}}).catch((rejecter) => {});
/* @return (promise) {status: boolean,如果连接成功,则为true如果不是false err: string,如果状态为false err将不为null} */
connect()方法的结果作为Promise返回,它将包含连接尝试的结果:
cmb.connect()。然后((connectmethodresult)=> {//在建立连接后做某事configureader();})。catch((失败)=> {console.log(“cmb - connectreder失败:”+ json.stringify(失败))});
ReaderDevice的连接状态有一个事件侦听器,即CMBReader.EVENT.ConnectionStateChanged事件,下面将对其进行更详细的解释。
/* @return (promise) {status: boolean, if disconnect succeeded true if not false err: string, if status false err将不为null} */
就像有连接(),有一个断开()与之相反的方法连接():
cmb.disconnect();
类似于连接(),断开()也会触发CMBReader.EVENT.ConnectionStateChanged事件。
/* @return Scanner Activity的Promise (bool)值(如果命令成功则为true,否则为false) */
启动/停止扫描过程,我们使用这些方法。它们返回一个承诺,如果命令成功(扫描已经开始或停止),这个承诺将被解析,否则将被拒绝(如果没有初始化活动的ReaderDevice或未连接)。
启动扫描仪并扫描条形码后,扫描结果触发CMBReader.EVENT.ReadResultReceived事件。
一旦与Reader建立了连接,我们就可以通过调用setSymbologyEnabled().它需要三个参数:一个cmbroadreader。SYMBOLOGY是要启用或禁用的符号,一个布尔值用于ON/OFF,一个String用于commanddid处理命令结果。
cmb.setSymbology (CMBReader.SYMBOLOGY。QR,真的,CMBReader.SYMBOLOGY_NAME.QR);
这种方法触发了CMBReader.EVENT.CommandCompleted事件,其结果包含commandid.字符串,以便您知道在事件结果中哪些命令成功,哪些命令失败。
要检查我们是否启用了符号,我们使用isSymbologyEnabled ().它有两个参数:CMBReader。我们要检查的符号学,还有commandid.用于识别响应的字符串。结果触发了CMBReader.EVENT.CommandCompleted事件,它包含commandid.字符串,以便您知道在事件结果中哪些命令成功,哪些命令失败。
cmb.isSymbologyEnabled(CMBReader.SYMBOLOGY.QR,CMBReader.SYMBOLOGY_NAME.QR);
/* @return (promise) {status: boolean,如果成功执行了命令err: string,则为true,如果状态为false,则err将不为null} */
如果我们想启用闪光灯,我们可以使用setLightsOn ().它期望一个争论布尔并返回承诺。
/ * @return(承诺){status:boolean,如果灯亮则为true,否则错误:字符串,在错误(例如reader未初始化)} * /
我们可以用isLightsOn()检查灯的状态,它返回一个承诺。
/ ** @return a与cmbreader.connection_state值解析当前阅读器设备的值* /
如果需要获取当前连接状态,getConnectionState()可以使用
cmbter . getconnectionstate ().then(function(connectionState){if (connectionState == cmbter . connection_state . connected){// reader is connected}});
这应该只在使用设备内置的相机进行扫描时使用(cmbread . device_type . camera)。
要设置相机在使用相机设备作为条形码阅读器时如何表现,我们使用SetCamerAmode()。它需要cmbreader.camera_mode参数。
cmbter . setcameramode (cmbter . camera_mode) /**使用无瞄准器的相机。预览打开,照明可用。CMBReader.CAMERA_MODE。NoAimer = 0,使用基本瞄准器(例如,StingRay)。预览关闭,照明不可用。CMBReader.CAMERA_MODE。被动瞄准器= 1,使用相机与主动瞄准器(如MX-100)。预览关闭,照明可用。CMBReader.CAMERA_MODE。ActiveAimer = 2,使用移动设备前置摄像头。 Preview is on, illumination is not available. CMBReader.CAMERA_MODE.FrontCamera = 3 */
注意:在调用之前应该设置CameraModeloadScanner ()为了生效。
这应该只在使用设备内置的相机进行扫描时使用(cmbread . device_type . camera)。
这个函数需要一个整型参数,它是我们想要启用的所有预览选项的OR-ed结果的结果。
cmb.setPreviewOptions (CMBReader.CAMERA_PREVIEW_OPTION。NoZoomBtn | CMBReader.CAMERA_PREVIEW_OPTION.NoIllumBtn);
注意:PreviewOptions应该在我们调用之前设置loadScanner ()为了生效。
这应该只在使用设备内置的相机进行扫描时使用(cmbread . device_type . camera)。
cmb.setPreviewContainerPositionAndSize([0,0100,50]);//将预览设置为0,0和100%宽度50%高度
这应该只在使用设备内置的相机进行扫描时使用(cmbread . device_type . camera)。
将相机预览设置为全屏而不是局部视图。
cmb.setPreviewContainerFullScreen ();
这应该只在使用设备内置的相机进行扫描时使用(cmbread . device_type . camera)。
仅适用于iOS。
设置摄像头预览部分视图顶部轴开始下方的状态栏匹配的android行为。它需要一个布尔参数。
cmb.setPreviewContainerBelowStatusBar(真正的);cmb.setPreviewContainerPositionAndSize([0,0100,50]);//将预览设置为0,0和100%宽度50%高度.//在iOS上,部分视图将显示在状态栏下面。
cmb.setPreviewContainerBelowStatusBar(false);cmb.setPreviewContainerPositionAndSize([0,0100,50]);//将预览设置为0,0,100%宽50%高//在iOS上,部分视图将从屏幕顶部开始,并与状态栏重叠。
用于启用/禁用图像结果类型。需要一个布尔参数。
CMB.EbableImage(真实);
用于启用/禁用SVG结果类型。期待一个布尔的论点。
CMB.EbereImageGraphics(真实);
启用或禁用对扫描条形码的解析。需要一个cmbread . result_parser类型的参数。
setParser(CMBReader.RESULT\u PARSER.GS1);
设置读取结果类型的编码。期待CMBreader.ReadString_Encoding类型的一个参数。
cmb.setReadStringEncoding (CMBReader.READSTRING_ENCODING.UTF_8);
/*@return(promise){status:boolean,如果重置成功则为true,否则为false err:string,如果出现错误(例如读卡器未初始化)}*/
重置我们可以使用的配置选项resetConfig。
cmb.resetConfig(函数(结果){console.log(结果);})
/* @return (promise) {value: int err: string,在错误的情况下(例如,reader未初始化)}*/
方法显示所连接设备的电池水平。不接受任何论点。
仅适用于iOS。
用于创建用于MDM报告的身份验证凭据。它包含四个字符串参数:用户名、密码、clientID和clientSecret。
应该在setMDMReportingEnabled之前调用。
可以找到更多关于MDM报告这里
招商银行。createMDMAuthCredentials("username", "password", "clientID", "clientSecret");
仅适用于iOS。
拥有和操作许多可康生移动终端可能希望远程收集有关电池电量,电池运行状况,安装固件等的最新信息。
使用cmbSDK框架的iOS应用程序可以向MDM实例报告连接的移动终端的状态信息。这可以通过接受一个布尔参数的setMDMReportingEnabled方法启用。
可以找到更多关于MDM报告这里
cmb.setMDMReportingEnabled(true);
React Native CMBSDK模块发出可以在JS应用程序中使用的事件。
这些应该在componentDidMount函数中添加,并在componentWillUnmount中删除(请参阅反应组件生命周期).
首先,创建事件发射器:
导入NativeModules.nativePentemitter;Const ScannerListener =新的NativeEventemitter(CMB);
然后为您要处理的每个事件添加侦听器:
scannerListener.addListener(CMBReader.EVENT.ReadResultReceived,(result)=>{if(result.goodRead==true){Alert.Alert(result.symbologysting,result.readString);}});
以下是cmbSDK模块可以发出的所有事件:
cmbreader.Event.readResultreCeived CMBreader.Event.AvailabilityChanged Cmbreader.Event.ConnectionStateChanged Cmbreader.Event.ScanningStateChanged Cmbreader.Event.commandCompleted
commanddid (String,与用来发送命令的参数相同)eventType (String,例如:isSymbologyEnabled)命令(String,被发送的命令)成功(Boolean)状态(nullable, int,命令状态(参见CDMResponse.h))消息(nullable, String,命令有效载荷)图像(nullable, base64扫描图像的字符串表示)响应(nullable, Boolean,命令响应,例如:issymologyenabled将返回真/假)