admin管理员组

文章数量:1530837

二维码大家都很常见,使用场景也很多,但是日常使用中有两种场景比较常见。

1、二维码背后的内容是一个网址,扫描后直接跳转到对应的网址,比如:宣传海报,跳转到直播间、微官网或者微信公众号。

2、二维码背后的内容是字符串,扫描后直接展示出字符串内容,比如:有些设备上的二维码,扫描出来是一串字符串。

那么第二种二维码的使用场景是啥?其实无论扫描哪种二维码都是先把二维码的内容解析出来,然后再执行后面的操作,链接形式的就可以跳转链接,字符串形式的就展示字符串,所以我们就可以在解析出内容之后将这个内容拦截下来。比如这个字符串是设备编号,然后我们就可以根据这个编号去数据库查询这台设备的信息,然后展示出来。所以这给了我们很大的自主开发空间,那么怎么实现这个拦截过程呢?请看下面。

有很多种方法可以实现,这里我们只介绍微信公众号开发。

先上代码,这段代码是一些配置,可自行查看微信公众号开发者文档

         wx.config({
                   debug: false,
                   appId: appId,
                   timestamp: timestamp,
                   nonceStr: nonceStr,
                   signature: signature,
                   jsApiList: [
                       'scanQRCode',       
                   ]
           });

 下面的代码为扫描成功后返回的内容

wx.ready(function() {
             
      wx.scanQRCode({
          needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
          scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
          success: function (res) {
               alert("正确信息:"+JSON.stringify(res));
          }

       });
})
 

在我们测试的时候,发现安卓手机可以正常返回内容,但是苹果手机(iOS)会一闪而过,并且有时候能扫出来,有时候一闪而过,什么都不返回,有两种解决方法:

①在调取摄像头之前将需要扫描的二维码正对摄像头,这样扫描后会返回并弹出扫描的内容,很显然这不符合实际使用场景。

②第二种方案是:加一个延时,直接上代码。

wx.ready(function() {           
        wx.scanQRCode({
            needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
            scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
            success: function (res) {
                setTimeout(()=>{
                    alert("正确信息:"+JSON.stringify(res));
                },1000)  
            }

        })
})

在返回的内容里加一个延时,这样就很好解决了苹果手机(iOS)一闪而过不返回信息的问题。

本文标签: 一扫公众解决方案苹果网页