一、问题描述

  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. CSP2019游(AFO?)记

    Day 1 不知道为啥一看到\(T1\)就想到\(longlong\)可能存不下,试了下果然. \(T2\)想了半个小时胡出个\(O(n)\)算法,但是假了.冷静了一下,做了前缀和之后,合法的子区间\ ...

  2. VMWare workstation12配置CentOS6.5虚拟机NAT网络以及虚拟机静态IP

    1.右键网络连接—>打开网络和共享中心—>更改适配器设置—>找到网络适配器VMware Virtual Ethernet Adapter for VMnet8—>如下图所示修改 ...

  3. 已知源目录路径sourceFilePath,此目录下还有多级子目录和多个文本文件(*.txt)。尝试编写一个方法,将此目录下所有的文件拷贝至另一个目录targetFilePath,并其中的文本文件修改成SQL文件(*.SQL)。

    public void copyFile(String oldPath, String newPath) throws IOException { (new File(newPath)).mkdirs ...

  4. jmeter参数化之 CSV data set config

    第一步:测试计划右键--创建线程组   第二步:选择线程组:右键--sample---创建:http request 配置协议类型和服务名称,method 和path 第三步:选择线程组下的http ...

  5. 搞清楚MySQL事务隔离级别

    首先创建一个表 account.创建表的过程略过(由于 InnoDB 存储引擎支持事务,所以将表的存储引擎设置为 InnoDB).表的结构如下: 然后往表中插入两条数据,插入后结果如下: 为了说明问题 ...

  6. Laravel 中如何区别 Model 或者是 Builder?

    User::where('id',1)->update([])  和  User::find(1)->update([]) 有异曲同工之效.   额? 当你通过 Laravel 与数据库交 ...

  7. 获取客户端ip(包含中间反向代理)

    /** * 根据request获取用户的IP地址 * @param request * @return */ public static String getRemoteHost(HttpServle ...

  8. 【巨坑】springmvc 输出json格式数据的几种方式!

    最近公司项目需要发布一些数据服务,从设计到实现两天就弄完了,心中窃喜之. 结果临近部署时突然发现.....  服务输出的JSON 数据中  date 类型数据输出格式要么是时间戳,要么是  {&quo ...

  9. androidstudio导入新项目build tools不符合问题解决

    问题描述:从网上或者其他地方拷贝来完整代码导入androidstudio的时候,gradle过程显示build tools不符合 问题分析:你安装的SDK版本可能与其他人不一样,那么build的工具也 ...

  10. Excel不同版本差异性

    apache poi-3.16.jar /* ==================================================================== Licensed ...