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

資訊專欄INFORMATION COLUMN

踩坑---一個(gè)不是坑的難以言喻的坑,有關(guān)企業(yè)微信在iOS端上傳文件的坑

geekidentity / 1622人閱讀

摘要:我們的業(yè)務(wù)代碼是在自己的客戶端微信釘釘企業(yè)微信四個(gè)地方跑的同一套代碼。描述的具體描述是企業(yè)微信用戶在使用上傳圖片時(shí),無(wú)反應(yīng)。

起因

今早一去公司,被組長(zhǎng)遠(yuǎn)程發(fā)過(guò)來(lái)一個(gè)Bug,據(jù)說(shuō)是用戶反饋的一個(gè)iOS的問(wèn)題,在我們的業(yè)務(wù)中,有一個(gè)有關(guān)圖片上傳的問(wèn)題。我們的業(yè)務(wù)代碼是在自己的客戶端、微信、釘釘、企業(yè)微信四個(gè)地方跑的同一套代碼。

Bug描述

Bug的具體描述是企業(yè)微信用戶在使用上傳圖片時(shí),無(wú)反應(yīng)。但是在安卓下運(yùn)行正常。在其他平臺(tái)運(yùn)行正常。
找測(cè)試復(fù)現(xiàn)該問(wèn)題時(shí),發(fā)現(xiàn)在安卓平臺(tái)下一切正常,但是在iOS端測(cè)試發(fā)現(xiàn),在iOS8上運(yùn)行正常,在iOS9往上的系統(tǒng)中,會(huì)彈出一個(gè)報(bào)錯(cuò)

a.oldWXObj.invoke not a function
解決過(guò)程

因?yàn)槭窃趇OS端有問(wèn)題,所以我初步懷疑是因?yàn)槲覀冏约簩?duì)企業(yè)微信的相關(guān)SDK進(jìn)行二次封裝的時(shí)候出現(xiàn)了問(wèn)題,所以我在自己的業(yè)務(wù)代碼中找到了調(diào)用wx.chooseImage的地方,然后console出相關(guān)的opts參數(shù)

wx.chooseImage(opts);//這是我們自己的調(diào)用

wx.chooseImage({
    count: 1, // 默認(rèn)9
    sizeType: ["original", "compressed"], // 可以指定是原圖還是壓縮圖,默認(rèn)二者都有
    sourceType: ["album", "camera"], // 可以指定來(lái)源是相冊(cè)還是相機(jī),默認(rèn)二者都有
    defaultCameraMode: "batch", //表示進(jìn)入拍照界面的默認(rèn)模式,目前有normal與batch兩種選擇,normal表示普通單拍模式,batch表示連拍模式,不傳該參數(shù)則為normal模式。(注:用戶進(jìn)入拍照界面仍然可自由切換兩種模式)
    success: function (res) {
        var localIds = res.localIds; // 返回選定照片的本地ID列表,
                // andriod中l(wèi)ocalId可以作為img標(biāo)簽的src屬性顯示圖片;
                // 而在IOS中需通過(guò)上面的接口getLocalImgData獲取圖片base64數(shù)據(jù),從而用于img標(biāo)簽的顯示
    }
});

發(fā)現(xiàn)opts沒(méi)有問(wèn)題,然后開(kāi)始查看企業(yè)微信的開(kāi)發(fā)文檔,發(fā)現(xiàn)了這樣一段話

此接口在企業(yè)微信2.3及以后版本支持相機(jī)連拍(當(dāng)sourceType是camera時(shí))
參數(shù)defaultCameraMode僅在企業(yè)微信2.4.20及以后版本支持
從2.4.6版本開(kāi)始,IOS版企業(yè)微信瀏覽器將升級(jí)為WkWebView,因其不支持原有的直接通過(guò)localid作為img標(biāo)簽的src屬性來(lái)顯示圖片的方式。開(kāi)發(fā)者需要采用通過(guò)getLocalImgData來(lái)獲取localid對(duì)應(yīng)圖片的base64數(shù)據(jù)。

看到了iOS,看到了有關(guān)圖片上傳,便以為是這里的問(wèn)題,然后便開(kāi)始對(duì)localid 進(jìn)行修改,改著改著發(fā)現(xiàn),不對(duì)啊,是調(diào)用的時(shí)候就報(bào)錯(cuò)了,并不是因?yàn)樵?b>callback里面的問(wèn)題啊。

然后把wx.chooseImage進(jìn)行alert,發(fā)現(xiàn)這個(gè)函數(shù)是存在的,但是發(fā)現(xiàn)還是有問(wèn)題,代碼大概是這樣的

a.oldWXObj.invoke("chooseImage",params,callback)

然后我一直在想這個(gè)a.oldWXObj是什么東東,看源碼,并沒(méi)有找到這個(gè)東西,然后查看我們的sdk版本是1.0.0,最新的sdk版本是1.2.0。以為是因?yàn)閟dk版本的原因,然后把項(xiàng)目中的sdk升級(jí),問(wèn)題還是存在,看來(lái)不是sdk的原因,繼續(xù)探索。

后來(lái)沒(méi)有思路,去請(qǐng)教大佬,大佬給了個(gè)思路,在企業(yè)微信中開(kāi)啟一個(gè)別的第三方的業(yè)務(wù),看看他們的圖片上傳是否也存在相同的問(wèn)題,OK,照著這個(gè)思路往下繼續(xù)。我去,第三方的圖片上傳是沒(méi)有問(wèn)題的,OK,那么肯定是我們自己的業(yè)務(wù)代碼的問(wèn)題,然后把業(yè)務(wù)剝離出來(lái),在新建兩個(gè)文件,一個(gè)采用我們自己封裝的sdk,一個(gè)不用自己封裝過(guò)后的sdk,直接調(diào)用wx的sdk,然后我把相關(guān)的wx.config復(fù)制 了過(guò)去,發(fā)現(xiàn)圖片上傳還是有問(wèn)題,然后考慮是不是免登沒(méi)有通過(guò)呢? 試著調(diào)用其他的方法,發(fā)現(xiàn)獲取當(dāng)前位置、掃描二維碼、開(kāi)始錄音這三個(gè)方法都可以成功調(diào)用,確定免登是通過(guò)了的,不是免登的問(wèn)題。

大佬說(shuō)換個(gè)思路,用Charles開(kāi)始抓包查看第三方的實(shí)現(xiàn),這一部分才是寫(xiě)這個(gè) 踩坑記錄的重點(diǎn) ,主要是看這個(gè)調(diào)試的過(guò)程,最開(kāi)始用Mac自帶的Safari嘗試調(diào)試,發(fā)現(xiàn)企業(yè)微信并沒(méi)有把調(diào)試開(kāi)放出來(lái),只能通過(guò)抓包來(lái)一點(diǎn)點(diǎn)嘗試了,OK,在簡(jiǎn)書(shū)上搜索Charles抓包,按照步驟,發(fā)現(xiàn)第三方是https,然后再萬(wàn)能的簡(jiǎn)書(shū),抓包https,一切完成后。發(fā)現(xiàn)第三方也是調(diào)用的wx.chooseImage,那么說(shuō)明我們調(diào)用的業(yè)務(wù)代碼沒(méi)問(wèn)題啊,然后通過(guò)這種方式,用本地文件代替線上的文件進(jìn)行調(diào)試,把我們的相關(guān)業(yè)務(wù)代碼代替第三方的相關(guān)代碼,發(fā)現(xiàn)我們的代碼在第三方的應(yīng)用里面是正常運(yùn)行的。我去?。?!這就奇怪了呀,這時(shí),一天的時(shí)間不知不覺(jué)都過(guò)去了,還沒(méi)有解決問(wèn)題,心中真的是,一言難盡?。?!

最后,開(kāi)始從頭梳理代碼,從第三方最開(kāi)始調(diào)用企業(yè)微信的sdk開(kāi)始一點(diǎn)點(diǎn)對(duì)比,把我們的相關(guān)信息跑在第三方平臺(tái)里,來(lái),把wx.config粘貼過(guò)來(lái)、貼過(guò)來(lái)、過(guò)來(lái)、來(lái)......咦,這個(gè)config有一點(diǎn)不一樣誒!??!

//我們自己的配置
wx.config({
    debug: false, 
    appId: "", // 必填,企業(yè)微信的corpID
    timestamp: , // 必填,生成簽名的時(shí)間戳
    nonceStr: "", // 必填,生成簽名的隨機(jī)串
    signature: "",// 必填,簽名,見(jiàn)附錄1
    jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表見(jiàn)附錄2
});


//文檔標(biāo)準(zhǔn)的配置
wx.config({
    beta: true,// 必須這么寫(xiě),否則wx.invoke調(diào)用形式的jsapi會(huì)有問(wèn)題
    debug: true, // 開(kāi)啟調(diào)試模式,調(diào)用的所有api的返回值會(huì)在客戶端alert出來(lái),若要查看傳入的參數(shù),可以在pc端打開(kāi),參數(shù)信息會(huì)通過(guò)log打出,僅在pc端時(shí)才會(huì)打印。
    appId: "", // 必填,企業(yè)微信的corpID
    timestamp: , // 必填,生成簽名的時(shí)間戳
    nonceStr: "", // 必填,生成簽名的隨機(jī)串
    signature: "",// 必填,簽名,見(jiàn)附錄1
    jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表見(jiàn)附錄2
});

?突然發(fā)現(xiàn)我們的代碼配置里面,沒(méi)有beta這個(gè)配置,加上,試一下,

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

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

相關(guān)文章

  • 微信小程序里碰到的坑和小知識(shí)

    摘要:本文作者來(lái)自授權(quán)地址已解決在里設(shè)置了圖片路徑在里正常無(wú)誤但是在手機(jī)上是沒(méi)有顯示的解決辦法這段話位置放那么偏問(wèn)題描述代碼截圖模擬器里的效果手機(jī)里的效果未解決用小程序自帶的底部導(dǎo)航組件的話沒(méi)法實(shí)現(xiàn)跟微信原生底部小紅點(diǎn)或者消息提醒的功能已解決使用 本文作者:dongtao 來(lái)自:授權(quán)地址 1.已解決在app.wxss里設(shè)置了圖片路徑,在IDE里正常無(wú)誤,但是在手機(jī)上是沒(méi)有顯示的,解決辦法...

    yagami 評(píng)論0 收藏0
  • 微信小程序里碰到的坑和小知識(shí)

    摘要:本文作者來(lái)自授權(quán)地址已解決在里設(shè)置了圖片路徑在里正常無(wú)誤但是在手機(jī)上是沒(méi)有顯示的解決辦法這段話位置放那么偏問(wèn)題描述代碼截圖模擬器里的效果手機(jī)里的效果未解決用小程序自帶的底部導(dǎo)航組件的話沒(méi)法實(shí)現(xiàn)跟微信原生底部小紅點(diǎn)或者消息提醒的功能已解決使用 本文作者:dongtao 來(lái)自:授權(quán)地址 1.已解決在app.wxss里設(shè)置了圖片路徑,在IDE里正常無(wú)誤,但是在手機(jī)上是沒(méi)有顯示的,解決辦法...

    233jl 評(píng)論0 收藏0
  • thinkphp整合企業(yè)號(hào)的坑

    摘要:使用微信企業(yè)號(hào)回調(diào)的坑最近在做企業(yè)號(hào)回調(diào)的接口,之前做過(guò)幾個(gè)企業(yè)號(hào)的應(yīng)用了,每次接入到都報(bào)各種各樣的錯(cuò)誤,算哥倒霉,該踩的不該踩的坑全踩了。 ThinkPHP 使用微信企業(yè)號(hào)回調(diào)的坑 最近在做企業(yè)號(hào)回調(diào)的接口,之前做過(guò)幾個(gè)企業(yè)號(hào)的應(yīng)用了,每次接入到Thinkphp都報(bào)各種各樣的錯(cuò)誤,算哥倒霉,該踩的不該踩的坑全踩了。 這次掉坑里差點(diǎn)就放棄了,開(kāi)發(fā)過(guò)企業(yè)號(hào)的都知道,企業(yè)號(hào)回調(diào)會(huì)經(jīng)過(guò)一個(gè)...

    wing324 評(píng)論0 收藏0
  • 微信JS-SDK選擇圖片遇到的坑

    摘要:微信選擇圖片遇到的坑有個(gè)需求要在微信企業(yè)號(hào)里面做開(kāi)發(fā),有個(gè)功能是選擇圖片,使用標(biāo)簽肯定是不管用了,手機(jī)上不能多選,所以使用了微信的提供的相關(guān),這個(gè)地方真的是有坑,記錄一下。 微信JS-SDK選擇圖片遇到的坑 有個(gè)需求要在微信企業(yè)號(hào)里面做開(kāi)發(fā),有個(gè)功能是選擇圖片,使用input標(biāo)簽肯定是不管用了,Android手機(jī)上不能多選,所以使用了微信的JS-SDK提供的相關(guān)API,這個(gè)地方真的是有...

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

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

0條評(píng)論

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