我们从去年开始使用小程序做户外赛事SaaS,其中很重要一环就是通过扫条形码方式打卡。
起初使用wx.scanCode直接调用微信的扫一扫实现,就发现在无信号环境/飞行模式下就不让用了。当时觉得无法理解,凭什么识别一个条码还需要网络!?反馈这个问题,希望无网络下也能用,官方回复:“建议不错,会在后续改进”,整整一年并没有实现;有意思的是如果当时提供一个根本无法使用的假热点,只要有这个wifi链接即使无法访问互联网,这个扫一扫就又可以使用了,我今天也想问问微信的产品经理,这种自欺欺人的设计是为了什么?
前不久喜闻camera组件支持识别条形码,通过测试也的确可以再无网络下识别条码,非常开心。做成产品上线之后,觉得终于不需要和客户说在山沟沟里没信号如何做假热点了。呵呵,结果发现是自己想多了。客户赛事结束后反馈压根出不了摄像头画面! 我们经过反复测试,终于发现原因:在一个小程序周期里,第一次启动摄像头时,需要获取用户是否已对摄像头授权,而这个操作居然是需要连接网络的!!!!这请问究竟是哪门子逻辑???你们做了一个无需网络扫码的camera组件,但组件本身居然是依赖网络通畅才能获取授权使用!把授权文件本地加密下保存很难吗?当时我们测试的时候就发现第一次启动camera组件会有一定时间的延迟,但没想到还有这样的依赖!
请求微信团队:
wx.scanCode取消有信号才能扫描的限制!
小程序的授权数据本地持久化!或者在无法接触网络的时候进行单次session的授权可以吗!
求求各位了,真的,代表全公司给大家跪下了!
代码片段复现:
真机打开后,第一次授权使用camera
退出微信杀掉进程
打开飞行模式
重新打开微信
打开此代码片段的小程序
可以看到页面一片空白
如果把error打印出来:
detail :{ errMsg: "insertCamera:fail userAuth response is nil" } |