致命问题就是大部分条形码扫不出来,只有小部分可以,不过扫二维码倒是没问题很快。
最后我的解决办法是在微信公众号就调用微信的扫一扫(记得使用之前先调用一下微信签名),在安卓端就用安卓的(当然安卓端也需要配合改一下方法才能去调用安卓的方法)
- var loadWxConfig = async () => {
- // 进行签名的时候 Android 不用使用之前的链接, ios 需要
- let signLink = /(Android)/i.test(navigator.userAgent) ? location.href : window.entryUrl
- console.log('拼接的链接',signLink)
- const config = await getWxConfig({url: signLink})
- console.log('签名',config)
- window.wx.config({
- debug: false,
- appId: config.appId,
- timestamp: config.timestamp,
- nonceStr: config.nonceStr,
- signature: config.signature,
- jsApiList: [ 'getLocation', 'updateAppMessageShareData', 'scanQRCode','updateTimelineShareData' ],
- openTagList: [
- 'wx-open-launch-weapp' // 跳转小程序
- ]
- })
- window.wx.error(function (res) {
- console.log('哈哈', res)
- })
- }
- var scanQRCode = ({success, faild}) => {
- window.wx.ready(() => {
- window.wx.scanQRCode({
- needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
- scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有
- success: (res) => {
- var result = res.resultStr // 当needResult 为 1 时,扫码返回的结果
- console.log('二维码数据', result)
- success(validInput(res.resultStr))
- },
- faild: err => {
- faild(err)
- console.error('错误:', err)
- }
- })
- })
- }
- // 扫描
- callScan() {
- if (isMyApp()) {//安卓
- console.log('isMyApp()', isMyApp(), window.bridge)
- window.bridge.openScan()
- window.scanResult = (res) => {
- console.log('安卓扫描结果', res)
- this.simNum = res
- }
- } else if (isWeixinOfficialAccount()) {//微信公众号
- scanQRCode({
- success: (val) => {
- this.simNum = val
- }
- })
- } else {
- this.$vux.toast.text('该应用还没支持扫描功能', 'center')
- return
- }
- }
感谢以下博主: