vue项目中关于微信分享的坑,以及安卓和ios获取location.href不同的处理
最近做vue项目的微信公众号项目,涉及到微信分享,记录一下心得,以备后用,vue路由用的是hash模式;
该项目只是公众号里面的h5链接,不需要获取code获取access_token的票据,因此前端只需要将当前页面链接处理后发给后端回去分享参数即可;
分享参数包含:
wx.updateTimelineShareData({
title: option.title, // 分享标题
link: option.link, // 分享链接,该链接必须与当前页面对应的公众号的JS安全域名一致
imgUrl: option.imgUrl, // 分享图标 300*300
desc: option.desc, // 分享描述
success (res) {
// 用户成功分享后执行的回调函数
option.success(res)
},
cancel (error) {
// 用户取消分享后执行的回调函数
option.error(error)
}
})
1、第一步获取页面url;
通过window.location.href.split('#')[0]获取到页面的url,而且需要encodeURIComponent处理后发给后端来获取签名,否则签名无效;页面链接需要是动态获的,否则将导致分享后的页面签名失败。
2、第二步定义分享参数;
分享链接要求该链接域名或路径必须与当前页面对应的公众号JS安全域名一致,就是该链接必须是在公众号的JS安全域名接口中配置好的;
分享图片大小最好是300*300的,大小没有查到是否限制,但是尽量小,避免出现分享的链接无法记载出来图片;
3、第三步,调试;
由于公众号的各种限制,导致无法进行本地调试(大神请忽略,具体实现请百度),因此项目最好有个测试环境,新项目也可以直接在线上环境测试;
因为分享参数初始化的时候会判断当前页面的url与分享的link是否一致,不一致会报错,就导致无法在本地调试分享;
4、第四步解决ios和安卓分享后链接不一致的问题;
测试环境在ios端,分享参数正常,点击后,根据vue路由跳转也正常,ios分享给安卓后的链接,安卓也可以正常跳转页面,但是安卓从测试环境进去后,分享出来的参数显示正常,但是无法跳转到指定页面,只能跳转到路由首页;
通过复制链接发现,安卓获取的href是无法获取到#以及后面的路由参数的,导致页面只能是路由首页。但是安卓通过ios分享的链接点击进去后,再点击分享,发现路由跳转是正常的。
也就是说,如果安卓是通过带有#和路由参数的路径进去的项目,那么再获取的href则跟ios是一致的,路由也是正常跳转的;
处理方案有两种:第一种是判断当前机型是ios还是安卓,然后对获取的link进行不同的处理;ios无需处理,安卓拼接‘#’和当前路由参数即可;
第二种是公众号的点击链接不要只写域名,而是加上带有#和默认路由的,这样安卓点击进去获取的href也是正常的;
vue项目中关于微信分享的坑,以及安卓和ios获取location.href不同的处理的更多相关文章
- [转]Vue项目全局配置微信分享思路详解
这篇文章给大家介绍了vue项目全局配置微信分享思路讲解,使用vue作为框架,使用vux作为ui组件库,具体内容详情大家跟随脚本之家小编一起学习吧 这个项目为移动端项目,主要用于接入公众号服务.项目采用 ...
- vue 项目如何使用微信分享接口
首先做微信网页都要接入微信sdk: 安装sdk npm install weixin-js-sdk --save 具体可以查看微信公众平台技术文档:https://mp.weixin.qq.com/w ...
- vue项目中微信jssdk在ios签名失败
一.问题描述 1. vue项目中微信jssdk签名时,在安卓和ios是有差异的,签名时使用的url=window.location.href.split('#')[0],此时在安卓没问题,在ios会导 ...
- vue入坑教程(二)在vue项目中如何导入element以及sass
在项目中导入element以及sass.stylus等方便开发的工具以及UI框架 (1)如何在vue项目中导入elementUI框架 elementUI是饿了么团队开发出来基于vue的前端UI框架,其 ...
- Vue2中实现微信分享支付功能
Vue2中实现微信分享支付功能 近期做了一个微信公众号前后分离项目,前端采用Vue2开发,后端SpringBoot,今天迫不及待的来给大家分享一下这次在开发中遇到的一些坑以及解决办法. 在这里,一些 ...
- vue项目中使用bpmn-基础篇
内容概述 本系列“vue项目中使用bpmn-xxxx”分为五篇,均为自己使用过程中用到的实例,手工原创,目前属于陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项 ...
- vue项目中遇到的那些事。
前言 有好几天没更新文章了.这段实际忙着做了一个vue的项目,从 19 天前开始,到今天刚好 20 天,独立完成. 做vue项目做这个项目一方面能为工作做一些准备,一方面也精进一下技术. 技术栈:vu ...
- 如何正确的在项目中接入微信JS-SDK
微信JS-SDK的功能 如果你点进来,那么我相信你应该知道微信的JS-SDK可以用来做什么了.微信的官方文档描述如下. 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. ...
- vue项目中实现复制内容到剪贴板
项目中要实现分享功能,现在各种接口都关闭了,而且不同的浏览器要使用不同的代码,最后决定直接复制url,然后手动分享 Vue中使用了vue-clipboard2 github地址:https://git ...
随机推荐
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-2.使用Mybatis注解开发视频列表增删改查
笔记 2.使用Mybatis注解开发视频列表增删改查 讲解:使用Mybatis3.x注解方式 增删改查实操, 控制台打印sql语句 1.控制台打印sql语句 ...
- bashdb调试shell脚本
http://note.youdao.com/noteshare?id=ef705313b714cf3a17cfe17dc80956a3
- jenkins密码忘记解决
1.停止jenkins sh /usr/local/tomcat/bin/shutdown.sh 2.找到config.xml [root@test3 hello]# find / -name con ...
- Linux学习—mysql安装配置及远程连接
安装前准备 1.检查是否已经安装过mysql 执行命令 [root@localhost /]# rpm -qa | grep mysql 从执行结果,可以看出我们已经安装了mysql-libs-5. ...
- Django之logging配置
1. settings.py文件 做开发离不开必定离不开日志, 以下是我在工作中写Django项目常用的logging配置. # 日志配置 BASE_LOG_DIR = os.path.join(BA ...
- 3年磨一剑,我的前端数据 mock 库 http-mock-middleware
不好意思,离开博客园4年多了,一回来就是为自己打广告,真是害羞啊... http-mock-middleware 是我最近完成的一个前端数据 mock 库.它是我汇总近3年工作经验而诞生的一个工具,使 ...
- python基础知识(函数)
创建函数 def 函数名(可以选参数): 可选参数 ''' ''' 用三引号括起来的注释 说明功能和参数信息 可选参数指定函数体 执行函数程序代码 创建一个空函数 def empty(): p ...
- 解决使用wamp怎么使用php命令行
用了wamp,把php加到环境变量就报错啊! 那怎么用命令行啊! 可以找么着:(比如想执行 php think build --module demo) E:\php-project\tp5.> ...
- Android性能专项分类
性能专项分类:1.资源消耗2.启动耗时3.主要页面加载时间4.内存泄漏.抖动5.卡顿.页面渲染 一.资源消耗:CPU.内存.流量.功耗-----1.查看CPU占用率:adb shell dumpsys ...
- Oracle数据库弱口令解密
1.首先我们先看下Oracle加密的格式. 接下来我们把他头和尾部删除,中间加: 通过py脚本来进行完成 转换完成后输出成这种格式 之后直接丢进kali里面,用john --w=字典文件 + 转换文件 ...