更新记录

1.0.0(2021-03-16)

实现前置和后置摄像头扫码


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 9.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原生插件配置”->”云端插件“列表中删除该插件重新选择


  1. main.js中封装(封装了版本更新的业务处理)
    Vue.prototype.gotoScanCode = function(param){
    const myScanCode = uni.requireNativePlugin('Ly-ScanCode');
        console.log("gotoScanCode-cameraId:" + param.cameraId);
    var cameraId_int = parseInt(param.cameraId);
    var options = {
        scanType:['QR','EAN13','EAN8','PDF_417'],//扫码类型
        prompt:'将二维码/条形码放入框内,即可自动扫描',//扫码提示语
        // locked:true,//方向是否锁定、旋转(默认true)
        // beepEnabled:true,//扫码完成是否有提示音(默认true)
        // imageEnabled:false,//扫码成功时是否保存二维码图片(默认false)
        // cameraId : 1, //使用指定的相机ID(摄像头前1后0,默认0)
        cameraId : cameraId_int,
    };
    myScanCode.scanCode(options, res => {//res:{"result":"https://qr.alipay.com/cpx05564fwylkybgq7dxjb9","scanType":"QR_CODE","success":"true"}
        console.log("gotoScanCode-扫码res:" + JSON.stringify(res));
        // uni.showModal({
        //     title: '条码类型:' + res.scanType + "",
        //     content: '条码内容:' + res.result + ""
        // });
        if(res.result && res.result != "" && res.result != "用户取消" ){
            typeof param.success == "function" && param.success(res);
        }
    });
    }
    • 调用示例
      const myScanCode = uni.requireNativePlugin('Ly-ScanCode');
      myScanCode.scanCode(options, res => {
      console.log("扫码res:" + JSON.stringify(res));
      uni.showModal({
       title: '条码类型:' + res.scanType + "",
       content: '条码内容:' + res.result + ""
      });
      });
    • 参数options配置说明
      var options = {
      scanType:['QR','EAN13','EAN8','PDF_417'],//扫码类型(默认null),可参照返回值扫码类型(PDF_417、CODE_128等)
      prompt:'将二维码/条形码放入框内,即可自动扫描',//扫码提示语
      locked:true,//方向是否锁定、旋转(默认true)
      beepEnabled:true,//扫码完成是否有提示音(默认true)
      imageEnabled:false,//扫码成功时是否保存二维码图片(默认false)
      cameraId : 1, //使用指定的相机ID(摄像头前1后0,默认0)
      };
    • 返回格式示例
      {"result":"","success":"true","scanType":"PDF_417"}
  2. index.vue中调用
    <template>
    <view>
        <button @click="scanTest('0')">后置扫码</button>
        <button @click="scanTest('1')">前置扫码</button>
    </view>
    </template>
    <script>
    export default {
    data() {
        return {
        }
    },
    methods: {
        //扫码
    scanTest:function(flag){
        // #ifndef H5
        this.gotoScanCode({
                        cameraId:flag,
                success:function(res){
                        console.log("扫码res:" + JSON.stringify(res));
                        uni.showModal({
                                title: '条码类型:' + res.scanType + "",
                                content: '条码内容:' + res.result + ""
                        });    
                }
        });  
        // #endif    
    },
    }
    }
    </script>
    <style>
    </style>
  3. 备注
    • 下载插件后放到项目根目录下的nativeplugins文件夹(自建)
    • 在manfest.json中配置该原生插件:manfest.json->App原生插件配置->选择该本地原生插件
    • 原生插件配置之后,需选择自定义基座运行才能生效:创建自定义基座 —> 选择自定义基座

隐私、权限声明

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

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

插件不采集任何数据

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

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