通过npm下载插件
$ NPM install cmbsdk-react-native
大部分为自动安装
链接cmbsdk-react-native
通过添加这个来导入react-native应用中的组件
import {CMBReader, cmb} from 'cmbsdk-react-native';
方法访问所有API方法招商银行常量,所有枚举和常量都在CMBReader类中可用。
在继续之前,从我们的下载部分下载cmbSDK React-Native压缩文件,并参阅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模块工作。
请确保您已经从我们的下载页面下载了cmbSDK React-Native压缩存档。在下载的zip文件中,打开“Android/cmbsdk-android-binary”目录。
1.打开yourRNApp / android / app /目录,创建一个名为“libs”的新文件夹(如果没有的话),并打开它。放置“cmbsdklib-release”文件。在libs文件夹中。这个aar可以在下载的zip文件中的“Android/cmbsdk-android-binary”中找到
2.打开应用程序构建。Gradle位于yourRNApp / android应用程序然后加上这几行:
-在依赖项上面添加这个:
存储库{flatDir {dirs 'libs'}}
3.打开构建。Gradle位于yourRNApp /安卓并将minSdkVersion更改为19或以上
就是这样。您应该能够运行您的应用程序与cmbSDK react-native模块工作。
要启动并运行扫描仪,首先要做的是调用loadScanner ()方法。它需要一个CMBReader。DEVICE_TYPE参数。此方法不连接到阅读器设备。我们需要打电话connect ()在回调中实际连接到阅读器设备
cmb.loadScanner(cm面包. device_type . mxreader).then((response) => {cmb.getAvailability().then((response) => {if (response == cm面包. availability . available) {connectReader();}}).catch((rejecter) => {})});
/* @返回(承诺){状态:布尔值,如果连接成功则为true,如果不为false err:字符串,如果状态为false err将不为null} */
connect()方法的结果作为Promise返回,它将包含连接尝试的结果:
cmb.connect().then((connectMethodResult) =>{//在建立连接后做一些事情configureReader();}).catch((failure) => {console.log("CMB - connectReader failed: "+JSON.stringify(failure))});
ReaderDevice的连接状态有一个事件侦听器,即CMBReader.EVENT.ConnectionStateChanged事件,下面将更详细地解释。
/* @返回(承诺){状态:布尔值,如果断开连接成功则为true,如果不为false err:字符串,如果状态为false err将不为null} */
就像这样connect (),有一个断开()的相反方法connect ():
cmb.disconnect ();
类似于connect (),断开()还会触发CMBReader.EVENT.ConnectionStateChanged事件。
/* @返回Scanner Activity的Promise (bool)值(如果命令成功则为true,否则为false,例如:如果readerDevice未初始化)*/
要启动/停止扫描过程,我们使用以下方法。它们返回一个承诺,如果命令成功(扫描已经开始或停止)或拒绝(如果没有初始化的活动ReaderDevice或没有连接),将解析这个承诺。
启动扫描仪并扫描条形码后,扫描结果将触发CMBReader.EVENT.ReadResultReceived事件。
一旦有了到Reader的连接,我们就可以通过调用来启用符号setSymbologyEnabled ().它需要三个参数:CMBReader。symbolology是要启用或禁用的符号,一个布尔值表示ON/OFF,一个String值表示commandID,用于处理命令结果。
cmb.setSymbology (CMBReader.SYMBOLOGY。QR, true, cmbread . symbology_name .QR);
此方法触发CMBReader.EVENT.CommandCompleted事件,其结果包含commandID字符串,以便您知道在事件结果中哪些命令成功了,哪些命令失败了。
要检查是否启用了某个符号,可以使用isSymbologyEnabled ().它有两个参数:CMBReader。我们正在检查的符号学,以及commandID用于标识响应的字符串。结果触发CMBReader.EVENT.CommandCompleted事件,它包含commandID字符串,以便您知道在事件结果中哪些命令成功了,哪些命令失败了。
cmb.isSymbologyEnabled (CMBReader.SYMBOLOGY。QR CMBReader.SYMBOLOGY_NAME.QR);
/* @返回(承诺){状态:布尔值,如果执行成功则为true err:字符串,如果状态为false则err将不为null} */
如果我们想要启用flash,我们可以使用setLightsOn ().它期望一个参数布尔值,并返回一个promise。
/* @返回(承诺){状态:布尔值,灯亮时为true,否则为false err:字符串,如果出现错误(例如阅读器未初始化)}*/
我们可以使用isLightsOn()检查灯光状态,它返回一个承诺。
用CMBReader解决的承诺。当前读写器的CONNECTION_STATE值*/
如果需要获取当前连接状态,getConnectionState ()可以使用
cmb.getConnectionState().then(function(connectionState){if (connectionState == cmbread . connection_state . connected){// reader已连接}});
这应该只在使用设备内置的摄像头进行扫描(CMBReader.DEVICE_TYPE.Camera)时使用。
为了设置当我们使用camera设备作为条形码读取器时相机的行为,我们使用setCameraMode()。它需要一个CMBReader。CAMERA_MODE论点。
cmbread . setcameramode (cmbread . 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 ()才能生效。
这应该只在使用设备内置的摄像头进行扫描(CMBReader.DEVICE_TYPE.Camera)时使用。
此函数需要一个整数参数,该参数是我们希望启用的所有预览选项的OR-ed结果的结果。
cmb.setPreviewOptions (CMBReader.CAMERA_PREVIEW_OPTION。NoZoomBtn | cmbread . camera_preview_option . noillumbtn);
注意:PreviewOptions应该在我们调用之前设置loadScanner ()才能生效。
这应该只在使用设备内置的摄像头进行扫描(CMBReader.DEVICE_TYPE.Camera)时使用。
cmb.setPreviewContainerPositionAndSize ([0, 0100, 50]);//将设置预览为0,0和100%宽度50%高度
这应该只在使用设备内置的摄像头进行扫描(CMBReader.DEVICE_TYPE.Camera)时使用。
将相机预览设置为全屏而不是局部视图。
cmb.setPreviewContainerFullScreen ();
这应该只在使用设备内置的摄像头进行扫描(CMBReader.DEVICE_TYPE.Camera)时使用。
仅支持iOS。
设置摄像头预览部分视图顶部轴,以匹配android行为的状态栏下方开始。它需要一个布尔参数。
cmb.setPreviewContainerBelowStatusBar(真正的);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结果类型的编码。期望一个类型为CMBReader.READSTRING_ENCODING的参数。
cmb.setReadStringEncoding (CMBReader.READSTRING_ENCODING.UTF_8);
/* @返回(承诺){状态:布尔值,如果重置成功则为true,否则为false err:字符串,如果出现错误(例如阅读器未初始化)}*/
重置可使用的配置选项resetConfig。
cmb.resetConfig(函数(结果){console.log(结果);})
/* @返回(承诺){值:int err:字符串,如果出现错误(例如阅读器未初始化)}*/
方法显示连接设备的电池电量。不带任何参数。
仅支持iOS。
用于创建用于MDM报告的身份验证凭据。它接受四个字符串参数:用户名、密码、clientID和clientSecret。
应该在setMDMReportingEnabled之前调用。
关于MDM报告的更多信息可以在这里找到在这里
招商银行。createMDMAuthCredentials("username", "password", " cliententid ", "clientSecret");
仅支持iOS。
拥有并运营多个康耐视移动终端的公司可能希望远程收集有关电池电量、电池健康状况、已安装固件等的最新信息。
iOS应用使用cmbSDK框架,可以向MDM实例报告连接的移动终端的状态信息。这可以通过setMDMReportingEnabled方法启用,该方法接受一个布尔参数。
关于MDM报告的更多信息可以在这里找到在这里
cmb.setMDMReportingEnabled(真正的);
React原生cmbSDK模块发出的事件可以在js应用程序中使用。
这些应该在componentDidMount函数中添加,并在componentWillUnmount中删除React组件生命周期).
首先,创建事件发射器:
进口NativeModules.NativeEventEmitter;const scannerListener = new NativeEventEmitter(cmb);
然后为你想要处理的每个事件添加监听器:
scannerListener。addListener (CMBReader.EVENT。ReadResultReceived, (result) => {if (result. result.)goodRead == true){警报。alert(结果。symbologyString,结果。readString);}});
以下是cmbSDK模块可以发出的所有事件:
cm面包. event . availabilitychanged cm面包. event . connectionstatechanged cm面包. event . scanningstatechanged cm面包. event . commandcompleted
commanddid (String,用于发送命令的相同参数)eventType (String, ex: isSymbologyEnabled) command (String,发送的命令)success (Boolean) status (nullable, int,命令状态(参见CDMResponse.h) message (nullable, String,命令有效负载)image (nullable, base64扫描图像的字符串表示)response (nullable, Boolean,命令响应,ex: isSymbologyEnabled将返回true/false)