记一次微信分享的坑,ios和安卓分享打开的url不一样

vue微信浏览器安卓正常 ios config 报错 “errMsg“:“config:invalid问题 最近使用了wx-js-sdk,对接了一下微信环境下的功能,在使用wx.config中android 上可以config ok 的 但换到苹果上 报出invalid signature的错误。微信给的方法就是 使用hash /苦笑 ^_^ 微信也提到过不会存在这个问题,但是23年也遇见了 /苦笑 ^_^ 看了下github中的issue 提出问题在 2016年...2. ios访问只记录第一次的页面,跳转页面时页面不会改变(刷新及正常),android 正常。微信官网在之前版本也描述过。 阅读详情

一、环境

vite3+vue3+ts+router

二、问题描述

接微信分享sdk(1.2.0版本)什么的,都已经完成,现在问题出在了分享的url不一致

产品需求是:不同路由页面,分享出来始终保持为首页

现有项目的路由是hash路由,不能改为history的,这是前提

于是自己查阅了网上已有的方法,还是行不通,先贴一下我的处理逻辑:

const imgPath = new URL('@/images/logo.png', import.meta.url).href
// 这里使用了后端封装好的请求
const requestUrl = `${api.wechatShare}?shareUrl=${encodeURIComponent(window.location.href.split('#')[0])}`
axios({ url: requestUrl }).then(({ data }) => {
  let configData: any
  try {
    configData = JSON.parse(data)
  } catch (error) {
    configData = {}
  }
  wx.config({
    debug: false,
    appId: configData.AppId,
    timestamp: configData.Timestamp,
    nonceStr: configData.NonceStr,
    signature: configData.Signature,
    jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage']
  })

  wx.ready(function () {
    wx.onMenuShareTimeline({
      title: '分享标题',
      link: window.location.href.split('#')[0],
      imgUrl: imgPath,
      success: function () {},
      cancel: function () {}
    })
    wx.onMenuShareAppMessage({
      title: '分享标题',
      desc: '副标题/描述',
      link: window.location.href.split('#')[0],
      imgUrl: imgPath,
      type: 'link',
      success: function () {},
      cancel: function () {}
    })
  })
  wx.error(function () {})
})

处理逻辑没毛病的对吧,那我就从有问题的页面url开始分析

举个栗子:

分享页面的url由上述代码可以看出,理解成写死的就可以了

正常页面:https://baidu.com/index.html

错误页面:https://baidu.com/index.html#/pageA

安卓手机不管怎么分享,都是正确的

但是苹果手机只要分享出来错误页面,再分享还是错误页面!调试的头疼

三、解决方案

分享url写死了,为啥在ios下就会有问题呢,既然问题无法定位,就粗暴点解决吧

思来想去,用路由守卫判断!!

router.beforeEach((to, from, next) => {
  if (from.fullPath === '/' && to.name === 'pageA') {
    next('/index')
  } else {
    next()
  }
})

简单粗暴,解决完毕!

ps:

微信分享的机制:打开的是链接形态,分享出去也是链接形态。。

我小米手机,用浏览器打开,然后分享到微信就是卡片(小米标识),然后打开卡片重新分享就是带卡片的

微信图片分享支持url,缩略图支持url 微信图片分享支持url,缩略图支持url 在集成微信分享的过程中,如果缩略图是url形式,或者大图分享的图片是个url,就需要我们先把图片下载下来,然后依据微信的要求对图片做一些压缩操作,最后将图片的数据设置给要分享的对象即可。 我们一般需要支持的分享类型主要有文字类型(WXTextObject)、图片类型(WXImageObject)和网页类型(WXWebpageObject),具体请看分享与收藏功能-Android开发手册。 缩略图支持url 拿我们常见的网页分享举例,msg.thumbData对应的就 阅读详情

相关推荐

H5 集成微信自定义分享(兼容 ios & android)

最近做 H5 集成微信分享踩了很多坑,多少辛酸泪只有经历了才能体会,仅以此篇文章记录其中的酸甜苦辣。

tzzdblog的博客 1306

微信网页ios分享出去链接与当前页面不一致的解决办法

在开发微信公众号的时候,有些页面要做分享功能,未配置的情况下,在IOS上直接调用微信分享没有效果,可以这样解决 在当前页面重置window.location.href beforeRouteEnter (to, from, next) { // ios微信分享需要重新设置URL next(vm => { if (!window.localStora...

GracieLaw的博客 2694

react-native-wechat微信组件的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 react-native-wechat 具有微信 登录,分享,收藏(v1.9.9+) 和支付的功能,适合iOS/Android 双平台使用 安装 react-native-wechat //npm 安装 npm install react-native-wechat --save //yarn 安装 yarn add react-...

hahahhahahahha123456的博客 2853

vue IOS设备上微信浏览器分享页面后始终进入的是首页,而不是分享的那个页面

问题的原因: IOS:微信IOS设备,每次切换路由,SPA的url是不会变的。发起签名请求的url参数必须是当前页的url,正因为SPA页面的url是不会变的,所以签名请求中的url是项目打开后第一个页面的url(进入页)。 Android:微信安卓设备,每次切换路由,SPA的url是会变的。发起签名请求的url参数必须是当前页的url,所以在微信安卓设备中签名请求中的url是当前页的url。 1...

LYP_0320的博客 2154

关于微信二次分享,自定义分享参数不生效问题

在a分享给b之后,然后a打开和b的聊天记录,然后点击刚刚分享的卡片,在去分享的时候,设置的分享参数信息就失效了,在项目的app文件中记录一下当前的url路径,存储到本地,然后判断是不是ios,如果是的话,取本地的缓存地址。,安卓无问题,(b打开刚刚分享的卡片一样不行,自定义的分享参数没生效,提示失败)👆上面的文章给了我很好的思路,于是排查自己的项目问题。...

希文Gershwin 3192

uniapp [安卓苹果App端] - 实现APP唤起微信分享给好友和朋友圈,UniApp中实现微信分享功能全流程及示例代码,将当前页面或内容转发给微信朋友或转发到朋友圈(uni-app app端微信

uni-app,微信分享,安卓Android,苹果ios,uniapp微信一键分享,uniapp中的分享功能实现(APP,如何实现APP端的分享,uniapp分享实现,UniApp中实现微信分享功能:步骤详解与最佳实践,Uniapp打包app端实现微信分享好友、微信朋友圈,uniapp ios分享到微信,无法唤起微信应用,如何在UniApp中实现微信分享功能,uniapp APP分享到微信,通过h5页面跳转至对应的app页面,报错怎么办,没反应微信拉不起来,APP跳转到微信,uniapp分享到微信,最全的u

🏆 前端领域优质创作者 1万+

vue项目中关于微信分享的坑,以及安卓和ios获取location.href不同的处理

最近做vue项目的微信公众号项目,涉及到微信分享,记录一下心得,以备后用,vue路由用的是hash模式; 该项目只是公众号里面的h5链接,不需要获取code获取access_token的票据,因此前端只需要将当前页面链接处理后发给后端回去分享参数即可; 分享参数包含: wx.updateTimelineShareData({ title: option.tit...

dijiu5329的博客 1261

小蔺的米哈游数据分析师之路——MYSQL篇

作为新人,记录自己mysql学习历程

weixin_47070228的博客 428

安卓微信二次分享不显示描述和图片

问题描述 在做微信分享的时候有遇到过这样的问题,,第一次分享到微信,描述和图片都能正常显示,但是打开连接用微信自带的分享功能进行分享时,就会出现以下情况:描述变链接、图片不显示、标题变更。 导致的原因 实现微信分享需要调用JSSDK的两个分享接口,按照微信JSSDK最新JS 1.4.0文档上说: “原有的 wx.onMenuShareTimeline、wx.onMenuShareAppM...

weixin_43946756的博客 7068

【SLAM】SVO2.0编译运行和论文代码解读

SVO2是我遇到的最难编译的代码了,可能公开版本不能放太鲁棒的代码吧,搞了快一个星期,终于跑起来了。

iwanderu的博客 5966

PyCharm 2023最新版安装配置全攻略(附永久激活教程)

本文详细介绍了PyCharm 2023最新版的安装配置全流程,包括版本选择、初始配置、插件生态、工程模板、调试优化及团队协作等关键步骤。特别针对专业版和社区版的功能差异进行对比,帮助开发者高效搭建Python开发环境,提升编码效率与团队协作能力。

p4q5r6s7t的博客 847

微信分享前端开发全程详解含iOS、安卓、H5、ReactNative以及微信开放标签的适配和使用

本人在做微信分享前端部分的iOS、安卓和H5的页面和功能时踩了不少坑,于是写了这篇文章,内容包括微信分享在上面三个端接入的技术点和坑点、解决办法,微信开放标签的相关适配,以及ReactNative的特别处理部分。

kovlistudio的博客 2972

【数学建模】 进化计算与群体智能

遗传算法(GA)是一种用于优化和搜索问题的启发式算法。它模拟了自然选择的过程,其中个体通过遗传和变异进行繁殖,逐渐进化出更优的解。基本步骤初始化:生成初始种群。适应度评估:评估种群中每个个体的适应度。选择:根据适应度选择个体进行繁殖。交叉:选定个体对进行基因交换,生成新的后代。变异:对一些个体进行基因变异,以增加多样性。迭代:重复评估和繁殖过程,直至达到停止条件。粒子群优化算法(PSO)是一种基于群体智能的优化算法,由Kennedy和Eberhart于1995年提出。其灵感来源于鸟群觅食的行为。

weixin_42914989的博客 1105

微信分享ios 不显示图片和简介问题总结

问题 我做了微信分享,各种配置都ok,安卓实现分享,但是ios分享不显示图片和简介 。(如下图) 解决过程 经过一天的折腾,核对各种问题最终发现问题所在。是我的url中带有汉字使用escape()进行的加密,苹果分享的时候会自动的对(汉字)解码decodeURIComponent()造成了url签名错误。 http://adminpc.z1mei.co...

weixin_30561425的博客 3340

uniapp:微信支付报错requestPayment:fail errors,uniAPP调用uni.requestPayment微信支付提示错误(安卓app、ios苹果app、微信小程序支付报错)

uniapp微信支付报错requestPayment:fail errors,uniApp APP端调起微信支付失败报错requestPayment:fail errors,uniapp微信小程序支付的坑 “errMsg“: “requestPayment:fail errors“,uni.requestPayment微信支付,UNI-APP支付报错“errMsg“: “requestPayment:fail errors“ app微信支付,uniapp 安卓app微信支付报错,uni.requestPay

✅ 精选推荐文章 3910

从矩阵理论角度理解偏最小二乘回归,以及在脑科学中(脑影像与行为、基因表达的关系)的应用举例

偏最小二乘法 (PLS) 是一种多元数据驱动的统计技术,旨在提取表示最大大脑行为关联的潜在变量(或潜在成分 latent components [LC])。

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 970

React-Native-Wechat-Lib 完全指南:从安装到集成微信登录、分享与支付的终极教程

React-Native-Wechat-Lib 是一个功能强大的库,专为 React-Native 应用提供微信登录、分享、收藏和支付功能,支持 iOS 和 Android 双平台。本教程将带你快速掌握从安装到高级功能集成的全过程,让你的应用轻松接入微信生态。 ## 准备工作:快速搭建开发环境 在开始集成 React-Native-Wechat-Lib 之前,请确保你的开发环境满足以下要求:

gitblog_00386的博客 589

Lumerical 教程目录,说明及个人感悟(共计138篇,持续更新中)

Lumerical---教程说明及个人感悟

u011699626的博客 1万+

安卓、ios微信H5分享踩坑指南

博主最近在开发一个H5的项目,正好遇到了微信分享,不得不说微信的文档不知多久没更新的缘故,里面的操作可以在安卓完美的进行,但是!有一个可恶的苹果挡住了去路!闲话不多说,直接进去正题。附上步骤图 一、判断是否需要微信授权 根据微信JSSDK文档,一般来说后端需要配置白名单。进入公众号里面填写JS接口安全域名,这点很重要,因为这样才能获取到正确的config配置。按照我现在的项目,我们前端主要做的就是判断用户有没有openid,没有的话就让他去微信登录授权。那该怎么判断呢?没错只能在地址里判断有没有code码

qq_41559229的博客 1206

W5500以太网&PoE扩展模块原理图设计,已量产

本文将以 W5500 以太网 & PoE 扩展板为对象,从嵌入式硬件设计的视角,深度拆解其电路架构、核心器件选型、关键功能实现,以及这款板子解决行业痛点的设计思路。

不脱发的程序猿 910

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

vue H5微信分享(hash history)碰到的坑总结

前言: 最近用VUE全家桶在做微信分享的时候碰到了许许多多的坑,在这边总结一下。 微信分享的时候, 要获取当前页面的URL,通过URL获取签名,不懂的可以看微信文档: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 坑1: 微信分享会自动屏蔽掉#后面的参数***且#后面的参数不参与签名*** 如果你采用的是...

qq_35220376的博客 3437

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

vue中微信分享出来的链接点开是首页 iOS是正常的 安卓不行

这次项目中 公众号Vue界面,有有关微信分享的功能,开始就正常调取微信接口jssdk 结果iOS正常功能,安卓手机分享任何界面别人打开都成了首页!开始搜了搜 没找到原因,也就不想管了!谁知道 用户不同意,非揪着这个不放,所以我们只能来改了,我天真的是,,,,吐血 关键是我传的地址都是写死的啊 就是本页面 有说是关于vue带hash ‘#/’ 微信分享后点开链接是首页的问题 头大! 最...

yongyafang123的博客 2025

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Flutter微信SDK wechat_kit:一站式集成微信登录、分享与支付

wechat_kit是一款专为Flutter开发者打造的微信SDK,提供便捷的微信登录、分享与支付功能集成方案。无论是新手还是有经验的开发者,都能通过这个工具快速实现Flutter应用与微信生态的无缝对接,为用户带来更流畅的使用体验。 [![Flutter微信SDK wechat_kit图标](https://raw.gitcode.com/gh_mirrors/we/wechat_kit/ra

gitblog_01067的博客 486

React-Native-Wechat-Lib 分享功能全攻略:文本、图片、链接、小程序分享技巧

React-Native-Wechat-Lib 是一款专为 React-Native 应用开发的微信集成库,提供了登录、分享、收藏和支付等核心功能。本文将聚焦分享功能,详细介绍如何在 iOS 和 Android 平台上实现文本、图片、链接和小程序的分享功能,帮助开发者快速集成微信分享能力。 ## 一、准备工作:环境配置与初始化 在开始实现分享功能之前,需要完成基础的环境配置和初始化工作,确保

gitblog_00749的博客 681

ios分享之后立即获取分享状态_微信invalid signature,微信IOS分享失效,微信刷新之后IOS不能分享,spa单页面微信分享,wx.ready不执行?...

微信的坑,哭着也要填完。小白选手刚接触微信公众号网页,产品出来个需求,要求h5网页在任何页面都可以分享,并且分享的内容是自定义的(B端配置),我一听这还不简单,微信官方文档里写的明明白白,好说。我用的是vue2版本+微信的jssdk是npm安装的1.4.0的版本。使用的是vue-router的< history >模式。大概有ABCD四个页面吧。自己想的很美好,也上网查阅了前辈们说的大...

weixin_36403165的博客 981
上一篇: 粘性布局sticky下的fixed显示被遮挡问题
下一篇: elementPlus表格table自定义合计行,还不止一行!
gyysmile
博客等级 码龄8年 25粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值