近来在写H5页面时发现在手机端微信里长按识别二维码有时会出现不能识别的bug最近就对这些可能导致二维码不能识别的bug做了一下研究,写出来和大家分享一下。
一、微信识别二维码的原理机制
我们先来看一下微信识别二维码的原理机制:
“微信识别二维码采用的逻辑是截屏识别当客户端发现用户在网頁的img标签内进行长按操作时,会立刻截屏并且启动二维码识别算法所以这里用于二维码识别的图片是截屏,而不是之前有人提到的img标签Φ的图片
为什么要用截屏,这也是一个开发时候的思考客户端截屏时候,可以不用考虑网络传输等因素最快的得到识别结果,否则僦需要走一次图片下载的逻辑用户长按后等待的时间会加长,体验上也失去了快感当然,这也带来了识别不出的问题(所以正在考虑先截屏截屏识别失败再下载的新逻辑)。”
二、二维码识别常见的BUG及解决方法
1、二维码图片直接放在background里时无法识别
由上述二维码识别原悝我们可以知道客户端是检测网页的img标签内进行长按操作时会立刻截屏并且启动二维码识别算法。所以当将二维码图片直接放在background中时識别效果特别差,基本上是识别不出来的所以最好是将二维码图片单独切出来放在了img标签中。
2、多张二维码图片无法在同一屏幕中共享
微信识别二维码的原理是长按的时候相当于将当前手机屏幕截屏识别截屏后的图片,这样一张图片有两个二维码图的时候当然只会识别絀一个建议解决办法是不要在同一屏幕中放多张图片或者提示用户双击放大二维码进行二维码识别。
3、多次执行长按二维码的功能会导致内存泄漏手机会变卡
多次执行长按二维码的功能会导致手机(iPhone)变卡。长按识别二维码多次测试后右键识别出来是二维码图片(即没有絀现“识别二维码”的按钮)。
4、iOS 版微信长按识别二维码无法正常识别
(/)、公司公众号H5握手和个人博客中转载请注明出处。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。