vue单应用在ios系统中实现微信分享功能操作


Posted in Javascript onSeptember 07, 2020

表示是第一次使用vue做单应用显目,也是在逐渐的摸索中~更是各种踩坑,各种填坑,打算写博客么?是因为不想写笔记了,嗯嗯 就是这么简单 进入正题。

刚开始做微信分享的这个功能的时候,脑补了官方文档微信JS-SDK说明文档

基础的知识不多说了,反正多看文档总是没错的~在安卓系统上面分享是没出错的,但是在ios上面问题就来了,表示无限吐槽ios,但是吐槽归吐槽,问题总是该解决的—在网上百度了很多vue单应用在ios系统中实现微信分享失败的原因以及解决方案

原因

单页面应用通过什么入口进去的 url保持不变 比如说入口是./index 后面不管页面怎么跳转 地址栏的地址都保持./index不变 这就导致微信分享的时候 地址栏的地址与当前页面的url不匹配 获取签名失败 所以分享就失败了~

解决方案

可以使用window.location.href去跳转,而不使用路由跳转,这样可以使地址栏的地址与当前页的地址一样,可以分享成功(适合分享的页面不多的情况下)

把入口地址保存在本地,等需要获取签名的时候 取出来(有效~强推!!!)

注意:sessionStorage.setItem(‘href',href); 只在刚进入单应用的时候保存!

mounted: function() {
   this.$nextTick(function() { //vue里面全部加载好了再执行的函数 (类似于setTimeout)
    this.myAddressSlots[0].defaultIndex = 0
   });
   var href = window.location.href;
   if(!sessionStorage.getItem('href')){//将入口地址保存下来 ios分享会使用
    sessionStorage.setItem('href',href);
   }
  },

在使用存在本地的url去做分享的时候,建议安卓与iOS做判断,毕竟坑的只是iOS~

var url = 'lms-service/wechat-services/wechat-share-sign';
    var curl = window.location.href;
    if (!KZ.isAndroidOrIos() && KZ.isWeiXin()) {//isAndroidOrIos()安卓true IOS为false
     curl = sessionStorage.getItem('href');
     if(!curl){
      curl = KZ_CONFIG.DOMAIN;
     }
    }

好吧 就这样 能看到这篇博文的应该都是同路人~希望能够帮助到你们,还有就是 第一次写 思绪有点乱 多多包涵哈

补充知识:vue 微信分享及ios二次微信分享invalid signature解决

我就废话不多说了,大家还是直接看代码吧~

npm install weixin-js-sdk

页面中引入

import wx from 'weixin-js-sdk'

methods: {
	init() {
		var that = this;
		var url = encodeURIComponent(window.location.href.split('#')[0]);
		http.post(api.getSdk,url,function(data){
				let appId = data.appId;
				let timestamp = data.timestamp;
				let signature = data.signature;
				let nonceStr = data.nonceStr;
				that.initwx(appId, timestamp, signature, nonceStr);
		})	
	},
 
	initwx(appId, timestamp, signature, nonceStr) {
		var link = window.location.href;
		var imgUrl = 'https格式的图片'
		var shareData = {
			"imgUrl": imgUrl,// 分享显示的缩略图地址 ,根据自己情况而定
			"link": link,// 分享地址
			"desc": '描述',// 分享描述
			"title": '标题'// 分享标题
		};
		wx.config({
			debug: false,//调试模式
			appId: appId,// 公众号的唯一标识
			timestamp: timestamp,//生成签名的时间戳
			nonceStr: nonceStr,//生成签名的随机串
			signature: signature,
			jsApiList: ['onMenuShareTimeline', //
			'onMenuShareAppMessage'] //
		});
		wx.checkJsApi({
			jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage']
		});
		wx.ready(function() {
			wx.onMenuShareTimeline(shareData); //分享到朋友圈
			wx.onMenuShareAppMessage(shareData); //分享给朋友
		});
	}
},
created(){
  this.init();
},

备注:ios第二次分享 会出现invalid signature

原因分享后出现微信会在链接会自动加以下字符串,再次签名的时候,因为&特殊字符传给后台,后台未处理,需要对链接encodeURIComponent处理,就不会出现invalid问题

朋友圈 from=timeline&isappinstalled=0

微信群 from=groupmessage&isappinstalled=0

好友分享 from=singlemessage&isappinstalled=0

以上这篇vue单应用在ios系统中实现微信分享功能操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript国旗变换效果代码
Aug 13 Javascript
javascript学习笔记(五) Array 数组类型介绍
Jun 19 Javascript
jquery 获取dom固定元素 添加样式的简单实例
Feb 04 Javascript
javascript限制用户只能输汉字中文的方法
Nov 20 Javascript
JavaScript中的setUTCDate()方法使用详解
Jun 11 Javascript
jQuery实现垂直半透明手风琴特效代码分享
Aug 21 Javascript
详解JavaScript对象类型
Jun 16 Javascript
js获取时间函数及扩展函数的方法
Oct 30 Javascript
详解Vue SPA项目优化小记
Jul 03 Javascript
微信小程序自定义键盘 内部虚拟支付
Dec 20 Javascript
React 条件渲染最佳实践小结(7种)
Sep 27 Javascript
vue实现购物车的小练习
Dec 21 Vue.js
vue 微信分享回调iOS和安卓回调出现错误的解决
Sep 07 #Javascript
一篇文章带你从零快速上手Rollup
Sep 07 #Javascript
基于vue hash模式微信分享#号的解决
Sep 07 #Javascript
在项目vue中使用echarts的操作步骤
Sep 07 #Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
Sep 07 #Javascript
Vue.js原理分析之nextTick实现详解
Sep 07 #Javascript
小程序实现可拖动的悬浮按钮
Sep 07 #Javascript
You might like
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
php empty() 检查一个变量是否为空
2011/11/10 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
IE6/7/8中Option元素未设value时Select将获取空字符串
2011/04/07 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
javascript删除字符串最后一个字符
2014/01/14 Javascript
javascript中eval和with用法实例总结
2015/11/30 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
2017/02/15 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
react-native之ART绘图方法详解
2017/08/08 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
koa2+vue实现登陆及登录状态判断
2019/08/15 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
2020/03/02 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
比较详细Python正则表达式操作指南(re使用)
2008/09/06 Python
python比较2个xml内容的方法
2015/05/11 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
Python reduce()函数的用法小结
2017/11/15 Python
关于numpy.where()函数 返回值的解释
2019/12/06 Python
Python StringIO如何在内存中读写str
2020/01/07 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
Html5自定义字体解决方法
2019/10/09 HTML / CSS
日本最大美瞳直送网:Morecontact(中文)
2019/04/03 全球购物
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
Unix里面如何在后台运行程序
2016/10/14 面试题
检察官就职演讲稿
2014/01/13 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
前台接待岗位职责范本
2015/04/03 职场文书
2015年母亲节活动策划方案
2015/05/04 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
世界文化遗产导游词
2019/08/07 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
台积电称即便经济低迷也没有降价的计划
2022/04/21 数码科技