微信公衆號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仍是顯示這個接口無法用)。vue


折騰了一成天,官方文檔看了好幾遍,網上基本上全部的方法都試了,發現都沒什麼卵用,最後打開IOS的分享頁面,再複製IOS分享頁面的連接,發現連接是這個格式"http://xxx.xxxx.xxx/?from=singlemessage#/abcd",相比之下只是多了個"?from=singlemessage"字段,抱着試一試的心態,在當前連接中添加"?from=singlemessage",發現全部問題都迎刃而解。代碼以下:android


....
....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"字段就直接跳轉到首頁?瀏覽器

相關文章
相關標籤/搜索