小程序web-view中使用JSSDK,ios安卓踩坑

背景: 在小程序中使用web-view使用react,需要调用相关JSSDK的接口配置, IOS能正常使用,安卓却签名错误invalid signature
基础配置按照官方文档来, 这里说明下配置注意事项:
  1. 引入微信jssdk,wx.config所用到的工具函数,appid 要使用公众号的APPID,如果APPID使用的是小程序的APPID,config时会报签名无效,要注意config签名参数的大小写

  2. 在公众号里面配置,js安全域名配置成web-view的域名

以上配置成功后, 在IOS中使用都能正常使用, 却在安卓机器上使用签名失败invalid signature, 硬是没在网上找到相关解决方案, 很多都是安卓使用正常, IOS使用异常.

煎熬两天综合了其他问题,经过尝试终于通了,记录一下解决方案, 希望帮助遇到同样问题的人


    <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
    <script>
        // web-view进入react的第一时间, index.html时记录url
        if (typeof window.entryUrl === 'undefined' || window.entryUrl === '') {
            window.entryUrl = location.href.split('#')[0];
        }
    </script>
// 发送给后端签名时 这里就需要区分了!!
let isAnd = /(Android)/i.test(navigator.userAgent); //安卓终端
let url = isAnd ? 
          encodeURIComponent(window['entryUrl']) :          
          encodeURIComponent(location.href.split('/?')[0]);

分析:

  • 我这里进入web-view的地址是https://dev.xxx.com?openId=xxx&token=xxxx
  • 然后进入默认路由页面url已经变成https://dev.xxx.com/workbench?appkey=xxx

SPA 的router路由机制,在安卓和ios的不同, jssdk url签名的
ios只认第一次的路由,我只需要传第一次路由给后端就行


上一篇
节流和防抖 节流和防抖
函数防抖(debounce)含义: 在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。 debounce 使用场景 search搜索联想,用户在不断输入值时,用防抖来节约请求资源。 window触发resize的时候,不断
2019-12-18
下一篇
git常用的指令和问题处理 git常用的指令和问题处理
一、开发时常用的指令1. github配置 ssh key配置cd ~/.ssh 查看是否有id_rsa、id_rsa.pub文件,如果没有需要手动生成。 ssh-keygen -t rsa -C "youremail@exam
2019-03-28