icyalala
2014-05-07 14:17:57 +08:00
之前被迫研究过微信二维码的逻辑,大概是:微信先把二维码包含的网址传回微信服务器。
如果处于白名单内(或者有其他更多的判断),则放行直接打开网址。 如果微信判断可能有风险,则显示‘网页存在风险是否打开’。用户确认后,先由微信服务器去抓取并解析网址所在的页面,然后去掉所有JS等交互,再吐给客户端,这时所有的交互,包括redirect、JS、a标签之类的,都会失效。至于说网址是否有风险那是个黑盒,完全受微信服务端控制。
之前我的解决办法就是去检查 UA 然后针对微信做专门处理。
具体来说:
1.正常情况下,二维码页面会显示下载按钮,或者直接redirect到安装包/AppStore。
2.遇到包含 MicroMessenger 字符串的UA时,就多显示一张图片,图片提示“由于微信的限制,如果不能自动下载,请点击右上角xx按钮,用safari打开” 类似这样的文案。
(弄得我好恶心 =_= )