vue h5引入微信sdk 實(shí)現(xiàn)分享朋友圈抡锈,分享給朋友董栽,獲取地理位置

最近入職的公司主要做微信端的h5,所以在所難免要引用sdk企孩。雖然官方文檔寫(xiě)的還算清楚锭碳,但是還是有坑。

1.在index.html中 引入微信sdk


<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>

2.在assets/js 下新建文件 wx.js


export default {

  wxShowMenu: function (that,sign='') {

    let url = window.location.href.split('#')[0]

    that.$http.post('/xxx',  //請(qǐng)求你們公司后臺(tái)的接口 獲取相關(guān)的配置

      that.$getSingQuery({

        appKey: 'xxx',

        url

      }))

      .then(res => {

        var getMsg = res.data.data;

        // console.log('微信配置----------')

        // console.log(res.data)

        wx.config({

          debug: false,  //生產(chǎn)環(huán)境需要關(guān)閉debug模式  測(cè)試環(huán)境下可以設(shè)置為true  可以在開(kāi)發(fā)者工具中查看問(wèn)題

          appId: getMsg.appid, //appId通過(guò)微信服務(wù)號(hào)后臺(tái)查看

          timestamp: getMsg.timestamp, //生成簽名的時(shí)間戳

          nonceStr: getMsg.noncestr, //生成簽名的隨機(jī)字符串

          signature: getMsg.sign, //簽名

          jsApiList: [ //需要調(diào)用的JS接口列表

            'updateAppMessageShareData', //自定義“分享給朋友”及“分享到QQ”按鈕的分享內(nèi)容(1.4.0) 新接口

            'updateTimelineShareData', //自定義“分享到朋友圈”及“分享到QQ空間”按鈕的分享內(nèi)容(1.4.0) 老接口

            'onMenuShareTimeline', //分享到朋友圈 老接口

            'onMenuShareAppMessage',//分享給盆友 老接口

            'getLocation'  //獲取定位

          ]

        });

        wx.error(function (res) {

          // alert(JSON.stringify(res))

          console.log(res)

          // config信息驗(yàn)證失敗會(huì)執(zhí)行error函數(shù)勿璃,如簽名過(guò)期導(dǎo)致驗(yàn)證失敗擒抛,具體錯(cuò)誤信息可以打開(kāi)config的debug模式查看,也可以在返回的res參數(shù)中查看补疑,對(duì)于SPA可以在這里更新簽名歧沪。

        });

        wx.ready(function () {

          if(sign=='location'){ //由于 獲取定位往往是頁(yè)面一加載 就提示獲取地理位置 所以可以直接在寫(xiě)在 wx.ready

            wx.getLocation({

              type: 'wgs84', // 默認(rèn)為wgs84的gps坐標(biāo),如果要返回直接給openLocation用的火星坐標(biāo)莲组,可傳入'gcj02'

              success: function (res) {

                var latitude = res.latitude; // 緯度诊胞,浮點(diǎn)數(shù),范圍為90 ~ -90

                var longitude = res.longitude; // 經(jīng)度,浮點(diǎn)數(shù)撵孤,范圍為180 ~ -180迈着。

                var speed = res.speed; // 速度,以米/每秒計(jì)

                var accuracy = res.accuracy; // 位置精度

                that.latitude=res.latitude;

                that.longitude=res.longitude;

                that.geocodeRegeo()//逆地理編碼  調(diào)用你vue實(shí)例里的方法

                do something...

              }

            });

          }

        });

      })

      .catch(error => {

        alert(error)

        console.log(error)

      })

  }

}

3.在main.js 將WXConfig綁在vue原型上 這樣哪個(gè)頁(yè)面需要初始化 直接通過(guò)原型就可以拿到


import WXConfig from './assets/js/wx'  //微信分享

Vue.prototype.WXConfig = WXConfig

4.在需要的頁(yè)面 進(jìn)行初始化

微信JS-SDK說(shuō)明文檔:同一個(gè)url僅需調(diào)用一次邪码,對(duì)于變化url的SPA的web app可在每次url變化時(shí)進(jìn)行調(diào)用裕菠。

所以 我們?cè)谀阈枰捻?yè)面 mounted 時(shí), this.WXConfig.wxShowMenu(this);調(diào)用就可以闭专。

我這里將this傳入 只是為了能直接在wx.js 調(diào)用vue上的一些方法奴潘。比如axios


  mounted: function () {

    this.WXConfig.wxShare(this);

  },

通過(guò)按鈕自定義觸發(fā)


html

<div class="fxbox bor_b"

    @click="shareFriend">分享給朋友</div>

<div class="fxbox bor_b"

    @click="shareFriendCircle">分享到朋友圈</div>

js

    shareFriendCircle () {

      let that = this

      wx.onMenuShareTimeline({

        title: this.dataCode.title, // 分享標(biāo)題

        desc: this.dataCode.desc, //分享描述

        link: this.dataCode.link,// 分享鏈接

        imgUrl: this.dataCode.imgUrl, // 分享圖標(biāo)

        success () {

          console.log('分享給朋友圈 舊')

        }

      });

    },

        // 分享給朋友 舊

    shareFriend () {

      let that = this

      wx.onMenuShareAppMessage({

        title: this.dataCode.title, // 分享標(biāo)題

        desc: this.dataCode.desc, //分享描述

        link: this.dataCode.link,// 分享鏈接

        imgUrl: this.dataCode.imgUrl, // 分享圖標(biāo)

        success () {

          console.log('分享給朋友 舊')

        }

      });

    },

5.新老接口的區(qū)別

新接口 

    'updateAppMessageShareData' //自定義“分享給朋友”及“分享到QQ”按鈕的分享內(nèi)容(1.4.0)

    'updateTimelineShareData',//自定義“分享到朋友圈”及“分享到QQ空間”按鈕的分享內(nèi)容(1.4.0)

老接口

    'onMenuShareTimeline', //分享到朋友圈

    'onMenuShareAppMessage',//分享給盆友

注意

  • 新接口中的success 回調(diào)函數(shù) 指的是 你的那些title desc...自定義設(shè)置成功了的回調(diào)函數(shù),而不是用戶主動(dòng)點(diǎn)擊微信右上角的三個(gè)點(diǎn)影钉,點(diǎn)擊分享給朋友或者朋友圈画髓,分享成功的回調(diào)函數(shù)。

  • 老接口success回調(diào)函數(shù) 是指 用戶成功分享給朋友或者朋友圈的回調(diào)函數(shù)

  • 經(jīng)測(cè)試 使用新接口 在ios下表現(xiàn)正常 平委,在部分安卓機(jī)下失效

建議使用老接口 無(wú)此問(wèn)題

6.補(bǔ)充

還有一點(diǎn)奈虾,link: this.dataCode.link,// 分享鏈接

該鏈接域名或路徑必須與當(dāng)前頁(yè)面對(duì)應(yīng)的公眾號(hào)JS安全域名一致

分享鏈接請(qǐng)不要出現(xiàn)奇怪的字符,或者URL編碼一下 比如:|肆汹,會(huì)導(dǎo)致 鏈接域名與js安全域名一致 但依然報(bào)安全域名的錯(cuò)誤

7.掃一掃

image

往期文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末予权,一起剝皮案震驚了整個(gè)濱河市昂勉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扫腺,老刑警劉巖岗照,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異笆环,居然都是意外死亡攒至,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)躁劣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)迫吐,“玉大人,你說(shuō)我怎么就攤上這事账忘≈景颍” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵鳖擒,是天一觀的道長(zhǎng)溉浙。 經(jīng)常有香客問(wèn)我,道長(zhǎng)蒋荚,這世上最難降的妖魔是什么戳稽? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮期升,結(jié)果婚禮上惊奇,老公的妹妹穿的比我還像新娘互躬。我一直安慰自己,他們只是感情好赊时,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布吨铸。 她就那樣靜靜地躺著,像睡著了一般祖秒。 火紅的嫁衣襯著肌膚如雪诞吱。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天竭缝,我揣著相機(jī)與錄音房维,去河邊找鬼。 笑死抬纸,一個(gè)胖子當(dāng)著我的面吹牛咙俩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播湿故,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼阿趁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了坛猪?” 一聲冷哼從身側(cè)響起脖阵,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎墅茉,沒(méi)想到半個(gè)月后命黔,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡就斤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年悍募,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洋机。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡坠宴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绷旗,到底是詐尸還是另有隱情啄踊,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布刁标,位于F島的核電站颠通,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏膀懈。R本人自食惡果不足惜顿锰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧硼控,春花似錦刘陶、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至熏版,卻和暖如春纷责,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背撼短。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工再膳, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人曲横。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓喂柒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親禾嫉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子灾杰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355