成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

jssdk 在history模式下安卓不能調(diào)用圖片上傳接口和分享接口

dkzwm / 473人閱讀

摘要:配置先上配置每個(gè)頁(yè)面都調(diào)用微信授權(quán)配置注是我在暴露的接口這份配置主要是根據(jù)微信公眾號(hào)開發(fā)踩坑記錄配置而來。

首先說明,應(yīng)用環(huán)境是使用的是vue+vue-router,history模式開發(fā)的單頁(yè)應(yīng)用。

配置

先上配置???

// index.js
const protocol = location.protocol + "http://" + location.host;
router.afterEach((to, from) => {
  if(!store.state.weChatUrl) {
    store.commit("m_weChatUrl", document.URL);
  }
  let url = protocol + to.fullPath.split("#")[0];
  store.dispatch("a_wxConfig", url);// 每個(gè)頁(yè)面都調(diào)用微信授權(quán)配置
});
// action.js
if(window.__wxjs_is_wkwebview === true) {
  urlType = 0;
} else {
  urlType = 1;
}
$get(...).then(item => {
 config = JSON.parse(item);
 $wechat.config(config);
 $wechat.ready(function () {})
})
// 注:$wechat是我在webpack external暴露的wx接口

這份配置主要是根據(jù)vue微信公眾號(hào)開發(fā)踩坑記錄(2)配置而來。

遇到的問題:

上傳圖片、分享朋友自定義內(nèi)容在ios上面可以,安卓不可以

有些很有趣的現(xiàn)象:

ios的可以,有些安卓可以,有些安卓不行

在安卓上面有些頁(yè)面的上傳圖片可以,有些頁(yè)面的上傳圖片不可以

在本地用測(cè)試公眾號(hào)可以,用正式公眾號(hào)大部分時(shí)間不行

不行的時(shí)候,微信debug模式的結(jié)果基本都是:config ok,CheckJsApi: permission Denied

正是這些現(xiàn)象把我?guī)税雮€(gè)地球,好不容易才試出來問題的所在。

秀一波我曾經(jīng)懷疑過的問題:

jssdk cdn加載可能不成功(用本地版測(cè)試過)

是不是寫死cdn 的協(xié)議頭http導(dǎo)致的(使用location.protocol測(cè)試過)

是不是簽名路徑的問題,難道低版本的安卓跟ios一樣也是要用第一次進(jìn)去頁(yè)面的url的呢

安卓在本地測(cè)試可以,在線上又不行了。會(huì)不會(huì)是由于后端寫了所有的jsApiList,但是線上正式賬號(hào)并不是所有的都具有這個(gè)權(quán)限的。(排除了)

是不是因?yàn)锳PI沒有在wx.ready 回調(diào)里面執(zhí)行。但是官方說過像上傳接口API那樣的明確不需要啊

懷疑過這些問題的可以不用懷疑了,經(jīng)過我的百般折騰,終于在這篇博客???關(guān)于html5-History模式在微信瀏覽器內(nèi)的問題 發(fā)現(xiàn)了一點(diǎn)曙光:

修改后的代碼如下

setTimeout(function () {
    $wechat.config(config);
}, 500);

簡(jiǎn)直不要太高興,居然可以啦?。。?!

其實(shí)細(xì)想一下config ok卻會(huì)發(fā)生permission Denied已經(jīng)給出了問題所在了,但是奇怪的現(xiàn)象太多了,想法就饒了半個(gè)地球了。
讓我來解析一下為什么config ok卻會(huì)發(fā)生permission Denied的報(bào)錯(cuò)。
由于在afterEach調(diào)用config的時(shí)候,頁(yè)面的路由還是上一個(gè)頁(yè)面的路由,config的url也是上一個(gè)頁(yè)面的路由,所以config是ok的。但是到調(diào)用API的時(shí)候,afterEach多數(shù)已經(jīng)resolve了,所以頁(yè)面的路由也已經(jīng)改變了,也就是當(dāng)前調(diào)用api的路由跟config的路由不一致,所以微信就判斷permission Denied了

新的問題,ios的分享總是首頁(yè)

用了上面延遲后的config之后,ios分享的每個(gè)頁(yè)面進(jìn)去的都是首頁(yè)。這是要折騰死我的節(jié)奏啊?????。幸好我只改了這延遲這一個(gè)地方,所以我很容易地就確定,肯定是afterEach在ios跟Android的處理是不一樣的,所以把ios改回原來不延遲的config就妥妥滴好了

if (window.__wxjs_is_wkwebview === true) {
  $wechat.config(config);
} else {
  setTimeout(function () {
    $wechat.config(config);
  }, 500);
}
在一個(gè)頁(yè)面定義了分享,之后每個(gè)頁(yè)面的分享內(nèi)容都是一樣的了

由于是單頁(yè)應(yīng)用,頁(yè)面不會(huì)刷新,所以微信分享一旦定義了,wx變量就會(huì)一直存在于系統(tǒng)運(yùn)行內(nèi)存中,自然就是每個(gè)頁(yè)面分享的內(nèi)容就是定義過的就不奇怪了。

解決辦法,在afterEach里面,定義每個(gè)路由默認(rèn)的分享標(biāo)題和描述,如果組件需要再在獨(dú)立的vue組件里面重新定義一篇分享的API即可

$wechat.onMenuShareTimeline({
    title: state.title, // 分享標(biāo)題
    success: function () {
      // 用戶確認(rèn)分享后執(zhí)行的回調(diào)函數(shù)
    }
});
$wechat.onMenuShareAppMessage({
    title: state.title, // 分享標(biāo)題
    type: "", // 分享類型,music、video或link,不填默認(rèn)為link
    dataUrl: "", // 如果type是music或video,則要提供數(shù)據(jù)鏈接,默認(rèn)為空
    success: function () {
      // 用戶確認(rèn)分享后執(zhí)行的回調(diào)函數(shù)
    },
    cancel: function () {
      // 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
    }
});

參考文檔:
vue微信公眾號(hào)開發(fā)踩坑記錄(2)
關(guān)于html5-History模式在微信瀏覽器內(nèi)的問題

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93594.html

相關(guān)文章

  • vue+微信支付目錄+JSSDK簽名解決方案

    摘要:主要是用,每當(dāng)用戶第一次進(jìn)來時(shí),去獲取一次簽名驗(yàn)證。注意只獲取一次,這樣簽名就解決了。 vue+微信支付目錄+JSSDK簽名解決方案 遇坑如下 注意:此方法僅為個(gè)人總結(jié),并非唯一解決方案 微信JSSDK簽名出錯(cuò) 微信支付 調(diào)起支付缺少API參數(shù) 微信支付目錄配置,只有5個(gè)配置,可能超過5個(gè)地方有配置,路由規(guī)劃 微信授權(quán)回調(diào)處理 我所使用的技術(shù) vue路由模式 history 模...

    Little_XM 評(píng)論0 收藏0
  • 微信開發(fā)之錄音上傳、載、轉(zhuǎn)碼

    摘要:具體請(qǐng)看我在提問里的回答下載七牛云文件間歇性失敗總結(jié)至此,在微信開發(fā)中關(guān)于錄音這一塊兒的功能,就已經(jīng)介紹完畢。 showImg(https://segmentfault.com/img/remote/1460000013595733?w=454&h=339); 原文是在我自己博客中,小伙伴也可以點(diǎn)閱讀原文進(jìn)行跳轉(zhuǎn)查看,還有好聽的背景音樂噢~ ????一年的時(shí)間里,前前后后都在搞微信開發(fā)...

    余學(xué)文 評(píng)論0 收藏0
  • 移動(dòng)端H5開發(fā)遇到的坑

    摘要:微信分享簽名錯(cuò)誤單頁(yè)應(yīng)用模式下微信分享一直提示簽名錯(cuò)誤按照微信官網(wǎng)文檔,已經(jīng)引入,正確的配置安全域名,后臺(tái)開發(fā)人員生成的簽名也通過微信簽名工具驗(yàn)證,但是前端的自定義分享一直報(bào)簽名錯(cuò)誤,沒有辦法自定義分享,如果確保了哪些基本配置沒有問題,并且 微信分享簽名錯(cuò)誤invalid signature vue單頁(yè)應(yīng)用history模式下微信分享一直提示簽名錯(cuò)誤invalid signature ...

    Eirunye 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<