通过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模块工作的情况下运行你的应用程序。
请确保您已经从我们的下载页面下载了cmbSDK React-Native压缩包。从下载的zip文件中,打开“Android/cmbsdk-android-binary”目录。
1.打开yourRNApp / android / app /目录,创建一个名为“libs”的新文件夹(如果还没有的话),并打开它。放置文件“cmbsdklib-release”。在libs文件夹中。这个aar可以从下载的zip文件“Android/cmbsdk-android-binary”中找到
2.打开应用程序构建。它坐落在yourRNApp / android应用程序然后加上这几行:
-在依赖项上面添加这个:
repositories {flatDir {dirs 'libs'}}
3.构建开放。它坐落在yourRNApp /安卓并将minSdkVersion改为19或更高
就是这样。你应该能够在cmbSDK react-native模块工作的情况下运行你的应用程序。
要让扫描器启动并运行,首先要做的就是调用loadScanner ()方法。它需要一个CMBReader。DEVICE_TYPE参数。此方法不连接阅读器设备。我们需要打电话connect ()在回调中连接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().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.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 (promise) {status: boolean,如果灯亮则为true,否则为false,如果出现错误(例如reader未初始化)}*/
我们可以用isLightsOn()检查灯的状态,它返回一个承诺。
/** @return使用CMBReader解析的承诺。当前读取器设备的CONNECTION_STATE值*/
如果需要获取当前连接状态,getConnectionState ()可以使用
cmbter . getconnectionstate ().then(function(connectionState){if (connectionState == cmbter . connection_state . connected){// reader is connected}});
这应该只在使用设备内置的相机进行扫描时使用(cmbread . device_type . camera)。
要设置当我们使用camera设备作为条形码读取器时摄像机的行为,我们使用setCameraMode()。它需要一个cmbroadreader。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(假);cmb.setPreviewContainerPositionAndSize ([0, 0100, 50]);//将设置预览为0,0和100%宽50%高。//在iOS上,部分视图将从屏幕顶部开始,并将重叠状态栏。
用于启用/禁用图像结果类型。期望一个布尔参数。
cmb.enableImage(真正的);
用于启用/禁用svg结果类型。期望一个布尔参数。
cmb.enableImageGraphics(真正的);
启用或禁用对扫描条形码的解析。需要一个cmbread . 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
commanddid (String,与用来发送命令的参数相同)eventType (String,例如:isSymbologyEnabled)命令(String,被发送的命令)成功(Boolean)状态(nullable, int,命令状态(参见CDMResponse.h))消息(nullable, String,命令有效载荷)图像(nullable, base64扫描图像的字符串表示)响应(nullable, Boolean,命令响应,例如:issymologyenabled将返回真/假)