当前位置: 移动互联网学院 > Android开发 > wkwebview适配问题解决方案
wkwebview适配问题解决方案 时间:2017-04-12     来源:Android开发学习网

今天要和大家分享一下wkwebview适配问题的一些知识。

1、微信iOS客户端将于2017年3月1日前逐步升级为WKWebview内核,需要网页开发者提前做好网站的兼容检查和适配;

2、iOS微信6.5.3版本开始支持开发者手动切换WKWebview和UIWebview,使开发者可提前对WKWebview进行适配。切换的方法在微信“添加朋友”中输入:switchweb,可进行WKWebview与UIWebview两者模式之间的转化

3、校验切换方法:

通过命令成功切换到WKWebview后,可通过以下方法验证当前网页使用的是否是WKWebview内核。

微信内任意入口进入任意网页,在网页加载成功后向下拉动页面(或点击网页右上角菜单按钮),使之显示出地址栏,当地址栏以 “此网页由” 开头即为当前使用WKWebview,若以“网页由”则是使用的UIWebview。

4、变量判断

页面如何判断当前使用的webview内核:

在页面中可通过微信注入的window.__wxjs_is_wkwebview变量判断当前使用的webview内核。 iOS微信6.5.3及其之后的版本 window.__wxjs_is_wkwebview 为true时是使用WKWebview,为 false或者 “undefine”时是 UIWebview 。

5、页面通过LocalID预览图片

变化:
1.2.0以下版本的JSSDK不再支持通过使用chooseImage api返回的localld以如:”img src=wxLocalResource://50114659201332”的方式预览图片。

适配建议:
直接将JSSDK升级为1.2.0新版本即可帮助页面自动适配,但在部分场景下可能无效,此时可以使用getLocalImgData 接口来直接获取数据。

(注释:在wkwebview模式下会出现无法预览图片的现象,解决方法:首先将jweixin升级为1.2.0,若不能解决问题,则需要对getLocalImgData 进行适配调用),具体办法

主要对ios进行适配,localData是图片的base64数据

if (!mui.os.ios) {

event.target.src = res.localIds[0];

// 支持低版本Android系统,延迟100ms执行上传

setTimeout(function() {

vm.uploadImageToWechat(index);

}, 100);

}else{

if (window.__wxjs_is_wkwebview) {

wx.getLocalImgData({

localId: res.localIds[0], // 图片的localID

success: function (res) {

var localData = res.localData; // localData是图片的base64数据,可以用img标签显示

event.target.src = localData;

}

});

} else {

event.target.src = res.localIds[0];

}

vm.uploadImageToWechat(index);

}

以上就是关于wkwebview适配问题的一些知识,更多Android开发技术文章,请持续关注我们。