通过NPM下载插件
$ NPM install cmbsdk-react-native——save
主要是自动安装
cmbsdk-react-native链接
通过添加这个,在你的react-native应用程序中导入组件
从“CMBSDK-React-Native”导入{Cmbreader,CMB};
控件可以访问所有的API方法招商银行常量,所有枚举和常量都可以在CMBReader类中使用。
在继续之前,请从我们的下载部分下载cmbSDK React-Native zip文件,并参阅API参考。
下载页面:https://cmbdn.cognex.com/download
API参考:https://cmbdn.cognex.com/knowledge/react-nat/rct-api-metho
请确保您已经从我们的下载页面下载了cmbSDK React-Native压缩包。从下载的zip文件中,打开iOS目录。
1.如果你正在使用移动设备内置的摄像头,对“MWBScannerImages”做同样的操作。xcassets”文件位于iOS/Resources目录。必威随行版官网
2.在您的项目信息。plist文件,你需要添加一个关键字,这取决于你使用的readerDevice类型。
就是这样。您应该使用CMBSDK React-Native Module工作运行您的应用程序。
打开应用程序构建。它坐落在yourRNApp / android应用程序然后加上这几行:
-在依赖项上面添加这个:
存储库{flatdir {dirs'../../node_modules/cmbsdk-reacont-native/android/cmbsdk-android-binary/cmbsdklib-release/','../../node_modules/cmbsdk-reacont-native/android/ cmbsdk-crossplatform-android-binary /'}}
就是这样。您应该使用CMBSDK React-Native Module工作运行您的应用程序。
如果你正在从旧版本的cmbSDK React-Native模块升级到1.2.260或更新版本,你需要做以下更改:
-在依赖项之上,用下面的代码替换先前添加的存储库:
存储库{flatdir {dirs'../../node_modules/cmbsdk-reacont-native/android/cmbsdk-android-binary/cmbsdklib-release/','../../node_modules/cmbsdk-reacont-native/android/ cmbsdk-crossplatform-android-binary /'}}
就是这样。您应该使用CMBSDK React-Native Module工作运行您的应用程序。
要让扫描器启动并运行,首先要做的就是调用loadScanner ()方法。它期望一个cmbreader.device_type param。此方法不连接到读取器设备。我们需要打电话connect ()在回调中实际连接到读者设备
cmb.loadScanner(cmbread . device_type . mxreader).then((response) => {cmb.getAvailability().then((response) => {if (response == cmbread . availability . available) {connectReader();}}).catch((rejecter) => {});
/ * @return(承诺){status:boolean,如果连接成功如果不是false err:string,如果status false err是null} * /
connect()方法的结果作为Promise返回,它将包含连接尝试的结果:
cmb.connect().then((connectMethodResult) =>{//在连接建立后做一些事情configureReader();}).catch((失败)=> {console.log("CMB - connectReader失败:"+JSON.stringify(失败))});
有一个事件监听器用于ReaderDevice的连接状态,即CMBReader.EVENT.ConnectionStateChanged事件将在下面进行更详细的解释。
/* @return (promise) {status: boolean, if disconnect succeeded true if not false err: string, if status false err将不为null} */
正如有connect (),有一个断开()与之相反的方法connect ():
cmb.disconnect ();
类似于connect ()那断开()也引发了CMBReader.EVENT.ConnectionStateChanged事件。
/* @return Scanner Activity的Promise (bool)值(如果命令成功则为true,否则为false) */
启动/停止扫描过程,我们使用这些方法。它们返回一个承诺,如果命令成功(扫描已经开始或停止),这个承诺将被解析,否则将被拒绝(如果没有初始化活动的ReaderDevice或未连接)。
启动扫描仪并扫描条形码后,扫描结果触发cmbreader.Event.readResultreCeived事件。
一旦与Reader建立了连接,我们就可以通过调用setSymbologyEnabled ().它需要三个参数:一个cmbroadreader。SYMBOLOGY是要启用或禁用的符号,一个布尔值用于ON/OFF,一个String用于commanddid处理命令结果。
cmb.setsybology(cmbreader.symbology.qr,true,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,true如果成功执行命令err:string,如果status false Err不会为null} * /
如果我们想要启用闪光灯,我们可以使用setlightson().它期望一个布尔值参数并返回一个承诺。
/* @return (promise) {status: boolean,如果灯亮则为true,否则为false,如果出现错误(例如reader未初始化)}*/
我们可以用isLightsOn()检查灯的状态,它返回一个承诺。
/** @return使用CMBReader解析的承诺。当前读取器设备的CONNECTION_STATE值*/
如果需要获取当前连接状态,getConnectionState ()可以使用
cmb.getConnectionState()。然后(函数(connectionState){if(connectionstate == cmbreader.connection_state.connected){// reader已连接}});
这应该只在使用设备内置的相机进行扫描时使用(cmbread . device_type . camera)。
要设置当我们使用camera设备作为条形码读取器时摄像机的行为,我们使用setCameraMode()。它需要一个cmbroadreader。CAMERA_MODE论点。
CMB.SetCameramode(CMBreader.camera_Mode)/ **使用没有Apier的相机。预览是开启的,照明可用。cmbreader.camera_mode.noaimer = 0,使用带基本瞄准器的相机(例如,Stingray)。预览关闭,照明不可用。cmbreader.camera_mode.passiveAimer = 1,使用相机,带有活跃的Aimer(例如,MX-100)。预览关闭,照明可用。cmbreader.camera_mode.ActiveAimer = 2,使用移动设备前置摄像头。预览为ON,不可用照明。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系统。
设置相机预览部分视图顶轴以启动匹配Androids行为的状态栏下方。它期望一个布尔的论点。
cmb.setPreviewContainerBelowStatusBar(true);cmb.setPreviewContainerPositionAndSize ([0, 0100, 50]);//将设置预览为0,0和100%宽50%高。//在iOS上,部分视图将显示在状态栏下方。
cmb.setPreviewContainerBelowStatusBar(假);cmb.setPreviewContainerPositionAndSize ([0, 0100, 50]);//将设置预览为0,0和100%宽50%高。//在iOS上,部分视图将从屏幕顶部开始,并将重叠状态栏。
用于启用/禁用图像结果类型。期望一个布尔参数。
cmb.enableImage(真正的);
用于启用/禁用svg结果类型。期望一个布尔参数。
cmb.enableImageGraphics(真正的);
启用或禁用解析扫描条形码。期待CMBreader.Result_Parser类型的一个参数。
cmb.setParser (CMBReader.RESULT_PARSER.GS1);
设置readString结果类型的编码。需要一个cmbread . readstring_encoding类型的参数。
cmb.setReadStringencoding(cmbreader.readstring_encoding.utf_8);
/* @return (promise) {status: boolean,如果重置成功则为true,否则为false,如果发生错误(例如reader未初始化)}*/
重置我们可以使用的配置选项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(真正的);
React本地cmbSDK模块发出的事件可以在js应用程序中使用。
这些应该添加到componentDidMount函数中,并在componentWillUnmount中删除(参见反应组件生命周期).
首先,创建事件发射器:
进口NativeModules.NativeEventEmitter;const scannerListener = new NativeEventEmitter(cmb);
然后为你想要处理的每个事件添加监听器:
scannerListener。addListener (CMBReader.EVENT。ReadResultReceived, (result) => {if (result. result);== true){警告。alert(结果。symbologyString,结果。readString);}});
下面是cmbSDK模块可以触发的所有事件:
cmbread . event . readresultreceived cmbread . event . availabilitychanged cmbread . event . connectionstatechange cmbread . event . scanningstatechange cmbread . event . commandcompleted
commandid(字符串,用于发送命令的相同参数)EventType(String,ex:issyymbologyEnabled)命令(字符串,发送的命令)成功(布尔)状态(Nullable,int,命令状态(请参阅cdmresponse.h)))消息(可空,字符串,命令有效载荷)映像(可空,base64字符串表示扫描图像)响应(可用的,boolean,命令响应,ex:IssymbologyEnabled将在此返回True / False)