uniapp h5实现扫一扫功能

正常uniapp小程序使用uni.scanCode实现扫一扫功能即可,但是当要求使用h5调用摄像头识别二维码可以使用 mumu-get-qrcode组件,
切记
只支持https域名
只支持https域名
只支持https域名
因为uniapp自带的api不支持h5,而且非微信环境也无法使用公众号isjdk的扫码,只能尝试其他方法但是发现只能https域名才可以调用,其他所有人的都不许http域名。开发调试记得去把这两个点起来,manifest.json => web配置 => 启动https协议

插件市场地址:(H5调用摄像头识别二维码(原生H5调用,不需要任何sdk,本地扫描识别,不需要后端))

HBX 导入就行,引用,注册,使用

<template>
    <view class="">
        <view class="flex align-center" @click="handleScan()">
            <image src="@/static/images/scan_icon.png" style="width: 50rpx;height: 50rpx;"/>
            <view class="ml-1 font32">
                扫一扫
            </view>
        </view>
        <view class="sectionview flex-center" v-if="showScan" @click="showScan=false">
            <mumu-get-qrcode @success='qrcodeSucess' @error="qrcodeError">
                <template v-slot:error>
                    <view>摄像头启动失败</view>
                </template>
            </mumu-get-qrcode>
        </view>
    </view>
</template>

<script>
    import mumuGetQrcode from '@/uni_modules/mumu-getQrcode/components/mumu-getQrcode/mumu-getQrcode.vue'
    export default {
        components: {
            mumuGetQrcode
        },
        data() {
                showScan: false
        },
        methods: {
            handleScan() {
                this.showScan = true;
            },
            qrcodeSucess(data) {
                this.$tab.navigateTo(`/pages/assetList/detail?assetsCode=` + data +
                    '&flag=2') //扫码跳转页面
                this.showScan = false;
            },
            qrcodeError(err) {
                console.log(err)
                uni.showModal({
                    title: '摄像头授权失败',
                    content: '摄像头授权失败,请检测当前浏览器是否有摄像头权限。',
                    success: () => {
                        uni.navigateBack({})
                    }
                })
                this.showScan = false;
            },
        }
    }
    

</script>

<style>
    .flex-center {
        display: flex;
        align-items: center;
        justify-content: center;
    }
    
    .sectionview {
        position: fixed;
        top: 0;
        left: 0rpx;
        width: 100%;
        height: 100vh;
        z-index: 0;
    }
</style>

导入插件,使用的时候可能会报错,则需要安装 jsQR

# 安装 jsQR
npm install jsqr --save

# 修改组件源码对 jsQR 依赖
import jsQR from "jsqr"

也可以单独新建页面 scan-qrcode,作为扫码页面,在需要调用扫码功能的页面进行 页面跳转。但是我建议把点击事件和扫一扫写在同一页面,这样可解决点击浏览器自带返回按钮,返回到扫一扫页面的问题~~~~~~~~~~~~~~~~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容