微信民众号IOS端复制链接失足,安卓端分享链接翻开只能进入首页等题目的处理

近来在做某个需要在微信中翻开的项目,部份页面会经由过程微信分享或复制链接分享给其别人,然后就遇到了以下坑:
1.IOS端复制链接或在其他浏览器中翻开时,如果原网站链接原本应当是”http://xxx.xxxx.xxx/#/abcd”,但复制和在其他浏览器中翻开的链接都是”http://xxx.xxxx.xxx/#/”
2.android端分享页面时,wx.onMenuShareAppMessage设置没题目,分享后回调函数显现挪用胜利,但分享的链接翻开依旧是”http://xxx.xxxx.xxx/#/”页(官方说6.7.2分享用updateAppMessageShareData接口,然则引入1.4.0版本js-sdk照样显现这个接口没法用)。

折腾了一整天,官方文档看了好几遍,网上基本上一切的要领都试了,发明都没什么卵用,末了翻开IOS的分享页面,再复制IOS分享页面的链接,发明链接是这个花样”http://xxx.xxxx.xxx/?from=singlemessage#/abcd”,相比之下只是多了个”?from=singlemessage”字段,抱着试一试的心态,在当前链接中增加”?from=singlemessage”,发明一切题目都水到渠成。代码以下:

....
....wx.config设置....
....
const ua = window.navigator.userAgent.toLowerCase()
const isIOS = !!ua.match(/iphone|ipad/)
const isWechat = ua.includes('micromessenger')
var firstEnter = true

router.beforeEach((to, from, next) => {

  if (isWechat) {
    let toPath = location.origin + (location.pathname + (location.hash ? '?from=singlemessage#' : '') + to.fullPath).replace('//', '/')
    if (isIOS && location.href !== toPath) {
      if (firstEnter) {
        // 别人翻开分享页面后,else中的内容会让第一个页面加载两次(应当是微信默许跳转引发的,else中明显已禁用了vue的跳转)
        firstEnter = false
      } else {
        // 不采纳vue默许跳转体式格局,运用原生跳转,处理复制链接或在其他浏览器中翻开时,链接毛病
        next(false)
        location.href = toPath
        return
      }
    }

    let config = {
      title: to.meta.title || '',
      desc: location.href,
      link: toPath,
      imgUrl: '',
      type: 'link',
      dataUrl: ''
    }
    wx.ready(function () {
      wx.onMenuShareTimeline(config)
      wx.onMenuShareAppMessage(config)
    })
  }
  next()
})

猜想微信内部应当会对域名是mp.weixin.qq.com之外的链接举行推断,若没有”?from=singlemessage”字段就直接跳转到首页?

    原文作者:goblin_pitcher
    原文地址: https://segmentfault.com/a/1190000019026995
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞