微信小程序如何长按识别生成的canvas二维码?

作者站长头像
站长
· 阅读数 14

之前没有做过小程序开发,很多小程序的api还不是很会。现在的需求是用户收到短信后,点击短信链接跳转至相应的公众号,但是查了现在的资料好像还不能直接外链跳转公众号,于是退而求其次,点击外链打开一个固定的小程序,然后小程序通过外链参数,动态生成二维码,引导用户长按二维码跳转至不同的公众号。小程序里用的qrcode.js,生成的二维码是在canvas上,但是小程序的长按识别只支持image。想用wx.previewImage预览canvas,但是下面这种方式没有拿到canvas的url

this.setData({
  url: document.getElementById('canvas').toDataURL("image/png")
})

不行的话就只能用web-view,然后再写一个H5页面,比较麻烦。有办法能直接小程序内原生实现动态生成二维码并长按识别的功能吗

好了现在二维码生成了……但是长按后只有转发、保存和收藏的选项,保存到本地然后利用微信扫一扫可以直接跳转到公众号,但是小程序内不能直接长按识别二维码,想要做到小程序内长按识别,对二维码有什么要求吗?微信小程序的文档也查不到

回复
1个回答
avatar
test
2024-07-05

用QRcode生成的二维码然后用

wx.canvasToTempFilePath({
    canvasId: 'canvas',
    success: (res) => {
      this.setData({
        imageUrl: res.tempFilePath,
      })
    },
    fail: (_) => {}
})

把canvas生成了image。但是有一个缺点是qrcode没有找到生成二维码后的回调,马上用 wx.canvasToTempFilePath 这个方法调用二维码可能会生成得不完整。因为就是临时用一下的方案就没改了。真要投入生产使用建议还是用其他更完善的库去生成二维码比较好。最后小程序里支持长按识别的只有小程序码、微信个人码、企业微信个人码、普通群码、互通群码以及公众号二维码。公众号文章链接生成的二维码无法识别。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容