vue單應(yīng)用在ios系統(tǒng)中實現(xiàn)微信分享功能操作
表示是第一次使用vue做單應(yīng)用顯目,也是在逐漸的摸索中~更是各種踩坑,各種填坑,打算寫博客么?是因為不想寫筆記了,嗯嗯 就是這么簡單 進(jìn)入正題。
剛開始做微信分享的這個功能的時候,腦補(bǔ)了官方文檔微信JS-SDK說明文檔
基礎(chǔ)的知識不多說了,反正多看文檔總是沒錯的~在安卓系統(tǒng)上面分享是沒出錯的,但是在ios上面問題就來了,表示無限吐槽ios,但是吐槽歸吐槽,問題總是該解決的—在網(wǎng)上百度了很多vue單應(yīng)用在ios系統(tǒng)中實現(xiàn)微信分享失敗的原因以及解決方案
原因
單頁面應(yīng)用通過什么入口進(jìn)去的 url保持不變 比如說入口是./index 后面不管頁面怎么跳轉(zhuǎn) 地址欄的地址都保持./index不變 這就導(dǎo)致微信分享的時候 地址欄的地址與當(dāng)前頁面的url不匹配 獲取簽名失敗 所以分享就失敗了~
解決方案
可以使用window.location.href去跳轉(zhuǎn),而不使用路由跳轉(zhuǎn),這樣可以使地址欄的地址與當(dāng)前頁的地址一樣,可以分享成功(適合分享的頁面不多的情況下)
把入口地址保存在本地,等需要獲取簽名的時候 取出來(有效~強(qiáng)推?。。。?/p>
注意:sessionStorage.setItem(‘href',href); 只在剛進(jìn)入單應(yīng)用的時候保存!
mounted: function() { this.$nextTick(function() { //vue里面全部加載好了再執(zhí)行的函數(shù) (類似于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; } }
好吧 就這樣 能看到這篇博文的應(yīng)該都是同路人~希望能夠幫助到你們,還有就是 第一次寫 思緒有點亂 多多包涵哈
補(bǔ)充知識: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,// 分享顯示的縮略圖地址 ,根據(jù)自己情況而定 "link": link,// 分享地址 "desc": '描述',// 分享描述 "title": '標(biāo)題'// 分享標(biāo)題 }; wx.config({ debug: false,//調(diào)試模式 appId: appId,// 公眾號的唯一標(biāo)識 timestamp: timestamp,//生成簽名的時間戳 nonceStr: nonceStr,//生成簽名的隨機(jī)串 signature: signature, jsApiList: ['onMenuShareTimeline', // 'onMenuShareAppMessage'] // }); wx.checkJsApi({ jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage'] }); wx.ready(function() { wx.onMenuShareTimeline(shareData); //分享到朋友圈 wx.onMenuShareAppMessage(shareData); //分享給朋友 }); } },
created(){ this.init(); },
備注:ios第二次分享 會出現(xiàn)invalid signature
原因分享后出現(xiàn)微信會在鏈接會自動加以下字符串,再次簽名的時候,因為&特殊字符傳給后臺,后臺未處理,需要對鏈接encodeURIComponent處理,就不會出現(xiàn)invalid問題
朋友圈 from=timeline&isappinstalled=0
微信群 from=groupmessage&isappinstalled=0
好友分享 from=singlemessage&isappinstalled=0
以上這篇vue單應(yīng)用在ios系統(tǒng)中實現(xiàn)微信分享功能操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- iOS如何開發(fā)簡單的手繪應(yīng)用實例詳解
- iOS指紋識別的簡單應(yīng)用
- iOS應(yīng)用腳本重簽名的實現(xiàn)方法
- 詳解IOS微信上Vue單頁面應(yīng)用JSSDK簽名失敗解決方案
- 利用Angular2 + Ionic3開發(fā)IOS應(yīng)用實例教程
- iOS實現(xiàn)應(yīng)用內(nèi)切換語言及字體大小(模仿微信)
- iOS應(yīng)用內(nèi)實現(xiàn)跳轉(zhuǎn)到手機(jī)淘寶天貓的方法
- IOS應(yīng)用內(nèi)支付返回新舊Receipt適配的方法
- iOS如何優(yōu)雅地消除應(yīng)用角標(biāo)詳解
- 如何在 iOS 應(yīng)用中添加位置信息
相關(guān)文章
解決betterScroll在vue中存在圖片時,出現(xiàn)拉不動的問題
今天小編就為大家分享一篇解決betterScroll在vue中存在圖片時,出現(xiàn)拉不動的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09vue+vue-router轉(zhuǎn)場動畫的實例代碼
今天小編就為大家分享一篇vue+vue-router轉(zhuǎn)場動畫的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09Element Plus 日期選擇器獲取選中的日期格式(當(dāng)前日期/時間戳格式)
如果想要獲取選中的日期時間就需要通過,Element Plus 日期選擇器?format屬性和value-format屬性,format指定輸入框的格式,value-format?指定綁定值的格式,本篇文章就給大家介紹Element Plus 日期選擇器獲取選中的日期格式(當(dāng)前日期/時間戳格式),感興趣的朋友一起看看吧2023-10-10vue微信分享的實現(xiàn)(在當(dāng)前頁面分享其他頁面)
這篇文章主要介紹了vue微信分享,在當(dāng)前頁面分享其他頁面,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04Vue?3?表格時間監(jiān)控與動態(tài)后端請求觸發(fā)詳解?附Demo展示
在Vue3中,使用el-table組件渲染表格數(shù)據(jù),通過el-table-column指定內(nèi)容,時間點需前端校準(zhǔn),用getTime()比較,到達(dá)時觸發(fā)操作,異步API請求可用async/await處理,setInterval實現(xiàn)定時監(jiān)控,配合條件判斷防止重復(fù)請求2024-09-09