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 ...
随机推荐
- 九十一:CMS系统之cms用户模型定义
数据库信息 DEBUG = TrueSQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@127.0.0.1:3306/test'SQLALCH ...
- mySQL的简单安装和配置
MySQL的安装和配置 1.去官网下载mysql-5.6.29-winx64.zip包.地址: http://dev.mysql.com/downloads/mysql/5.6.html 2,把安装包 ...
- 3分钟Markdown快速入门与使用
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. 注意:图片为效果图 1 标题 #开头代表标题,几个#号代表几级,最高支持六级标题 ...
- Laravel注册登陆认证API
注册接口 路由api.php:Route::post('register', 'Auth\RegisterController@register'); 控制器 http//controllers/au ...
- windows下,给golang编译的exe添加一个图标
通过go build生成的exe文件,通常是一个默认的图标,发给别人的时候,总觉得像病毒,下面我们来给他加一个好看的图标,让他看起来正经一些. 1.找到一个喜欢的图片. 2.通过工具或是在线工具生成. ...
- PostgreSQL 循环导出schema的脚本
需要备份的schema列表 $ cat need_backup_schema.txt pipeline_na_16q3_v4 pipeline_na_16q4_v8 pipeline_na_16q4_ ...
- php网络请求
get请求 /** * get请求 * @param $url,请求地址 * @return bool|string */ function getRequest($url){ $headerArra ...
- Jmeter之参数化(4种设置方法)
以多用户登录为例~~~ 参数化: 1.用户参数 2.CSV数据文件 3.函数助手CSVRead 4.用户自定义的变量 1.用户参数 脚本目录结构如下: 因为设置了2组账号密码,所以线程数设置为2(添加 ...
- Java EE Servlet相关的两个包
Servlet in Java EE 在Java EE的规范API中(链接),Servlet相关联的最重要的两个Package为: 1.javax.servlet 包含了一系列接口和类,他们在一个Se ...
- hdu 1576
老生常谈的问题 利用同余的思想 抽象出表达式 bx+9973y=n 然后用bx+9973y=1(题目给出了gcd(b,9973)=1) 求出基础解 y0 bx+9973y=n 的 基础解y=n*y0 ...