一、问题描述

  1. vue项目中微信jssdk签名时,在安卓和ios是有差异的,签名时使用的url=window.location.href.split('#')[0],此时在安卓没问题,在ios会导致签名失败。因为在安卓中应该拿去签名的URL就是每个页面的URL,在ios中拿去签名的URL应该是微信分享时的URL(这个是我自己猜的),微信会对ios页面链接做处理,我们复制到的链接有时是刚进入项目时的链接而不是当前页面的链接,多刷新几次的话可能就是当前页面的链接,总之这个是ios微信的bug,官方建议使用 hash路由解决,官方文档说明  https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/iOS_WKWebview.html

      

  2. 报错config:require subscribe,关注公众号后才能签名。

二、解决方案

  1. 使用hash路由

    使用hash路由时安卓ios都是没问题的,这也是官方的建议。

  2. history路由里使用 <a href=""></a>

    简单暴力使用a标签去跳转签名的页面,也就是说A->B,在B页面做签名的话,在A页面的跳转方式不用vue路由跳转,改用a标签跳转,这个时候获取到的URL是可以签名的。但是因为我们使用的是a标签去跳转的,所以在B页面用vue路由离开守卫监听不到回退事件,在B页面有用户未保存需要提示的话就不行了,否则可以使用此方法。

三、其他方案

  有人说在刚进入页面的时候保存URL在其他页面做签名,那如果在别的页面刷新几次的话还是会签名失败的;
  有人说在全局的路由守卫里做ios的判断用对应的完整URL做签名,反正我没测试成功。。。

vue项目中微信jssdk在ios签名失败的更多相关文章

  1. VUE项目引入微信jssdk

    npm i -S weixin-js-sdkimport wx from 'weixin-js-sdk'

  2. vue项目中关于微信分享的坑,以及安卓和ios获取location.href不同的处理

    最近做vue项目的微信公众号项目,涉及到微信分享,记录一下心得,以备后用,vue路由用的是hash模式: 该项目只是公众号里面的h5链接,不需要获取code获取access_token的票据,因此前端 ...

  3. vue项目引入FastClick组件解决IOS系统下h5页面中的按钮点击延迟,连续点击无反应的问题

    异常描述: ios系统手机中访问h5页面,按钮点击有延迟,连续点击卡顿.无反应. 异常原因: 这要追溯至 2007 年初.苹果公司在发布首款 iPhone 前夕,遇到一个问题:当时的网站都是为大屏幕设 ...

  4. 微信js-sdk开发获取签名和获取地理位置接口示例

    ###微信js-sdk开发获取签名和获取地理位置接口示例 前言:在做微信公众号开发时需要获取用户的地理位置信息,之前通过高德或者百度.腾讯等地图的api时发现经常获取不到,毕竟第三方的东西,后来改为采 ...

  5. vue项目中遇到的一些问题

    或访问:https://github.com/littleHiuman/experiences-about-vue  欢迎补充! vuex 状态 vue-cli 命令行 vue vue vue-rou ...

  6. vue项目中使用bpmn-流程图预览篇

    前情提要 上文已经实现了节点操作的前进.后退.导入.导出等操作,今日来实现“流程图预览”,以及视图的放大缩小 前提:项目安装过bpmn,安装可见上篇文章 实现要点 bpmn提供了两个神器:Modele ...

  7. vue项目中使用bpmn-节点篇

    前情提要 根据之前的操作,我们可以创建.导入.导出流程图,并对其进预览.通过此篇可以学到: 为节点添加点击.鼠标悬浮等事件 获取流程图内所有指定类型的节点 通过外部更新节点名字 获取节点实例的两种方法 ...

  8. vue项目中使用bpmn-为节点添加颜色

    内容概述 本系列 “vue项目中使用bpmn-xxxx” 分为五篇,均为自己使用过程中用到的实例,手工原创,目前属于陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意 ...

  9. vue项目中使用bpmn-基础篇

    内容概述 本系列“vue项目中使用bpmn-xxxx”分为五篇,均为自己使用过程中用到的实例,手工原创,目前属于陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项 ...

随机推荐

  1. python3网络编程

    网络编程(定义) 网络编程的本质就是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机,数据传递本身 没有多大难度,不就是把一个设备中的数据发送给一个设备,然后接收另一个设备的反馈的数据. ...

  2. finally应用

    finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常),经常被用在需要释放资源的情况下. 之前在写爬虫的时候数据 ...

  3. git 撤销修改和版本回退

    1. 工作区 文件只是在工作区进行了修改,还没有提交到暂存区(未进行 git  add 操作) 此时可以使用  git  checkout  --  filename  撤销工作区文件的修改 效果相当 ...

  4. Win10 的微软输入法输入稍快竟然会导致死机

    一周前,新装机器一次,竟然死机两三次,多发生在敲字时,最近逐步排查发现的这个问题,查阅了一下网上方案,果断采用了第三方输入法,至今没再死机过. 不过第三方输入法也不安分,是不是推送点头条新闻过来,和驱 ...

  5. OpenCV学习笔记(12)——OpenCV中的轮廓

    什么是轮廓 找轮廓.绘制轮廓等 1.什么是轮廓 轮廓可看做将连续的点(连着边界)连在一起的曲线,具有相同的颜色和灰度.轮廓在形态分析和物体的检测和识别中很有用. 为了更加准确,要使用二值化图像.在寻找 ...

  6. apicloud 顶部状态栏透明方法

    api.setStatusBarStyle({ style: 'dark', color:'transparent' });

  7. 修改deploy location

    在MyEclipse,如果某Web Project重命名后,项目名称有可能仍然是之前的名称. 修改路径: 第一, 路径:右击某Web Project,Properties->MyEclipse- ...

  8. form modelform formset modelformset的各种用法

    form modelform formset modelformset的各种用法   首先上结论: form适用于对单个表单的操作,并且需要对每个字段的验证规则自定义. modelform:适用于对用 ...

  9. JavaScript DOM 编程艺术(第二版) 常用JS小脚本

    function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') ...

  10. linux新建文件夹

    mkdir -p .... -p  ----parents no error if existion, make parent directories as needed