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 相关文章推荐
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
May 17 Javascript
jQuery队列操作方法实例
Jun 11 Javascript
对 jQuery 中 data 方法的误解分析
Jun 18 Javascript
javascript中var的重要性分析
Feb 11 Javascript
Jquery实现textarea根据文本内容自适应高度
Apr 03 Javascript
浏览器中url存储的JavaScript实现
Jul 07 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
Nov 25 Javascript
JQuery手速测试小游戏实现思路详解
Sep 20 Javascript
DOM 事件的深入浅出(一)
Dec 05 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
Jun 26 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
Dec 29 Javascript
jQuery实时统计输入框字数及限制
Jun 24 jQuery
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
php 数组二分法查找函数代码
2010/02/16 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
举例讲解PHP面对对象编程的多态
2015/08/12 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
7个Javascript地图脚本整理
2009/10/20 Javascript
js中关于一个分号的崩溃示例
2013/11/11 Javascript
js select option对象小结
2013/12/20 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
node实现简单的反向代理服务器
2017/07/26 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
Python中正则表达式的详细教程
2015/04/30 Python
python先序遍历二叉树问题
2017/11/10 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
2019/08/13 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
对tensorflow 中tile函数的使用详解
2020/02/07 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
python中什么是面向对象
2020/06/11 Python
python中关于数据类型的学习笔记
2020/07/19 Python
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
蔻驰法国官网:COACH法国
2018/11/14 全球购物
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
澳大利亚网上书店:QBD
2021/01/09 全球购物
如何使用PHP session
2015/04/21 面试题
自主招生自荐信指南
2014/02/04 职场文书
怎么写自荐书范文
2014/02/12 职场文书
化妆品促销活动总结
2015/05/07 职场文书
建国大业观后感800字
2015/06/01 职场文书
运输公司工作总结
2015/08/11 职场文书
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers