问题背景
需要很简略,咱们的一个小程序须要实现 pdf
预览,通过调研,微信小程序的文档有个文档预览 api: wx.openDoucument
,另外,这个接口只能关上本地文件,所以要配合另外一个接口 wx.downloadFile
, 把网络文件下载到本地。
问题 1: IOS 微信小程序常常打不开 pdf
咱们很快就用微信的 api 实现了预览性能,android 机一切正常,iOS 遇到一个问题:常常打不开预览,极少数状况能关上。打印日志,wx.downloadFile
和 wx.openDoucument
接口调用都是胜利的。
问题 2: 微信小程序 web-view 拜访阿里 oss 弹平安提醒
通过查找,网上的小程序 pdf 预览计划根本都是:android 应用微信 api,iOS 应用 web-view 来预览,web-view 须要一个在域名根门路搁置一个校验文件,这个不算麻烦,不过咱们公布正式环境,碰到了平安提醒问题:阿里的 oss 域名在微信外面会弹平安提醒,解决方案:绑定本人的域名。
问题解决
周末,我对 iOS 不能用微信 api 预览的问题耿耿于怀,再次查找材料,还是无果,于是改回微信 api 预览计划,退出各种调试,居然发现问题没有重现,iOS 能够预览!
我有点摸不着头脑,直觉通知我,必定有哪里不一样!于是我一段一段的代码来看,最终发现端倪:iOS 应用 web-view 预览时,咱们退出了一段判断代码:判断环境是 iOS 时,应用 web-view,是 Android 时,应用微信 api。这段判断代码是微信的获取零碎信息接口,要害的点是:它是个异步接口!
我大胆判断,异步是关键所在,于是改用 setTimeout,后果是 iOS 能失常预览,这段怪案到此也就结了。
有明确线索了,再来查找材料,发现微信小程序还有其余相似问题:canvas 保留图片、网络音频下载播放都须要加个延时。
欢送交换
集体读书公众号,欢送交换!