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

