更新记录

1.0.1(2021-11-16)

华视电子 CVR-100B蓝牙二三代证读卡器


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 11.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


前言

华视电子 CVR-100B蓝牙二三代证读卡器 阅读器,蓝牙扫描

功能

  • 识别身份证信息,支持居民身份证、港澳台居住证、外国人永居证
  • 支持身份证图片保存到本地,或转成base64

wrs-cvr组件

先在Android设置蓝牙里面连接读卡器蓝牙,然后再根据业务调用下面接口


var wrscvr = uni.requireNativePlugin("wrs-cvr");

方法

  • 初始化数据,放到onLoad函数里调用即可
wrscvr.initData();
  • 扫描设备
                wrscvr.scan((resp) => {
                    this.devices = [];
                    this.devices.push(...resp.bind);
                    this.devices.push(...resp.notBind);
                });
  • 连接设备
                var params = {};
                params.address = this.connectAddress;
                var result = wrscvr.connect(params);
                if(isString(result)) {
                    result = JSON.parse(result);
                }
                if(result.ret == 0) {
                    console.log("连接成功");
                    this.showMsg("连接成功");
                } else {
                    this.showMsg("连接失败");
                }
  • 读取身份证
                var docPath = plus.io.convertLocalFileSystemURL("_doc");
                var saveImageFilePath = docPath + "/head.png";
                var params = {};
                // params.saveImageFilePath = "/file/ss/logo.png"; // 是否保存为本地文件
                // params.needBase64Image = ""; // 图片是否base64转码
                params.saveImageFilePath = saveImageFilePath;
                var result = wrscvr.read(params);
                if(isString(result)) {
                    result = JSON.parse(result);
                }
                var jsonStr = JSON.stringify(result);
                this.img = saveImageFilePath;
                console.log("读卡信息:" + jsonStr);
                this.showMsg("读卡信息:" + jsonStr);
  • 对比指纹
                var params = {};
                // params.saveImageFilePath = "/file/ss/logo.png"; // 是否保存为本地文件
                // params.needBase64Image = ""; // 图片是否base64转码
                var result = wrscvr.matchFP(params);
                if(isString(result)) {
                    result = JSON.parse(result);
                }
                var jsonStr = JSON.stringify(result);
                console.log("读卡信息:" + jsonStr);
  • 休眠

wrscvr.sleep();
  • 唤醒
wrscvr.weak();
  • 断开
wrscvr.close();

完整demo:


<template>
    <div>
        <text>IDRDemo</text>
        <button @click="scan()">扫描</button>
        <button @click="connect()">连接</button>
        <button @click="read()">读卡</button>
        <button @click="marchFP()">对比指纹</button>
        <button @click="sleep()">休眠</button>
        <button @click="weak()">唤醒</button>
        <button @click="disConnect()">断开</button>
        <uni-list>
            <uni-list-item v-for="(item, index) in devices" :title="item.name" clickable @click="onClick(index)"
                :show-badge="connectAddress == item.address" badge-positon="left" badge-text="√"></uni-list-item>
        </uni-list>
        <image style="width: 100px; height: 100px; background-color: #eeeeee;" :src="img"
                               ></image>
        {{msg}}

    </div>
</template>

<script>
    import {isString, isObject, isType} from '@/utils/is_type.js'
    var wrscvr = uni.requireNativePlugin("wrs-cvr");
    export default {
        data() {
            return {
                devices: [],
                connectAddress: null,
                msg:"",
                img:""
            }
        },
        onLoad() {
            wrscvr.initData();
        },
        methods: {
            scan: function(){
                wrscvr.scan((resp) => {
                    this.devices = [];
                    this.devices.push(...resp.bind);
                    this.devices.push(...resp.notBind);
                });
            },
            connect: function() {
                var params = {};
                params.address = this.connectAddress;
                var result = wrscvr.connect(params);
                if(isString(result)) {
                    result = JSON.parse(result);
                }
                if(result.ret == 0) {
                    console.log("连接成功");
                    this.showMsg("连接成功");
                } else {
                    this.showMsg("连接失败");
                }
            },
            read: function() {
                var docPath = plus.io.convertLocalFileSystemURL("_doc");
                var saveImageFilePath = docPath + "/head.png";
                var params = {};
                // params.saveImageFilePath = "/file/ss/logo.png"; // 是否保存为本地文件
                // params.needBase64Image = ""; // 图片是否base64转码
                params.saveImageFilePath = saveImageFilePath;
                var result = wrscvr.read(params);
                if(isString(result)) {
                    result = JSON.parse(result);
                }
                // certType:身份证类型:“ ”:普通身份证  “J”:港澳台身份证   “I”:外国人永久居留证
                var jsonStr = JSON.stringify(result);
                this.img = saveImageFilePath;
                console.log("读卡信息:" + jsonStr);
                this.showMsg("读卡信息:" + jsonStr);
            },
            marchFP:function(){
                var params = {};
                // params.saveImageFilePath = "/file/ss/logo.png"; // 是否保存为本地文件
                // params.needBase64Image = ""; // 图片是否base64转码
                var result = wrscvr.matchFP(params);
                if(isString(result)) {
                    result = JSON.parse(result);
                }
                var jsonStr = JSON.stringify(result);
                console.log("读卡信息:" + jsonStr);
            },
            sleep:function(){
                wrscvr.sleep();
            },
            weak:function(){
                wrscvr.weak();
            },
            disConnect: function() {
                wrscvr.close();
            },
            onClick: function(index) {
                this.connectAddress = this.devices[index].address;
            },
            showMsg:function(m){
                this.msg = this.msg + "\n" + m;
            }
        }
    }
</script>

<style>

</style>

支持定制 QQ:252797991

如果觉得可以就点个👍吧,欢迎粉丝收藏,土豪打赏,您的关注就是我们创作的动力!

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android: <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件使用的华视电子 SDK会采集数据,详情可参考:http://www.chinaidcard.com/

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问