最近在 iOS 10.2.1 微信 6.5.5 版的 WKWebview 中调试一个单页应用时,发现 url 切换后修改分享信息的调用(例如 wx.onMenuShareTimeline)就会失效,而在 UIWebView 中则是正常的。
该单页应用使用的是 React-Router 3.x 的 history 模式,即不使用 hash 的模式。
发现问题后,尝试在每次 url 切换并调用 wx.onMenuShareTimeline 前先调用 wx.config 重新认证(原本是不需要这个步骤的),发现都会报 invalid signature 的错误,猜测调用 wx.onMenuShareTimeline 也是因为这个原因。
随后在iOS WKWebview 网页开发适配指南中找到如下建议:
iOS微信6.5.1,WKWebview在此版本中已知有以下问题:页面使用HTML5的History API pushState; popstate; replaceState等控制页面导航(典型的如单应用页面),同时使用JSSDK的wx.config为jsapi授权,此时大几率会出现jsapi因为无权限而调用失败的问题。 在6.5.1中页面若可能的情况下,可使用Anchor hash技术替换History技术来解决此问题。
iOS微信6.5.2及其之后版本,将不会存在以上问题,但不能100%确认有使用到 history或hash技术更改页面导航地址的页面完全没有此类问题,依然需要开发者注意关注此类问题。
但是我现在手头的微信版本已经为 6.5.5,理论上不存在此问题。
不知道下个版本是否会修复此问题?