您好,登錄后才能下訂單哦!
這篇文章主要介紹微信小程序怎樣使用webview調(diào)用微信掃一掃的功能,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
我們?cè)谧鰓eb開(kāi)發(fā)時(shí)是按照web開(kāi)發(fā)流程進(jìn)行的,當(dāng)需要快速將web項(xiàng)目移植到小程序里面,就需要用到小程序提供的webview組件。關(guān)于它的好處以及開(kāi)發(fā)平臺(tái)配置大家可以按照微信公眾平臺(tái)進(jìn)行配置
我這里主要說(shuō)下怎么在webview(html)里面使用高級(jí)功能。
首先:在不獲取jssdk配置時(shí),我們只能使用跳轉(zhuǎn)等一些基礎(chǔ)函數(shù)。但是涉及到要在webview(我們的html)里面直接調(diào)用微信掃一掃、打開(kāi)相冊(cè)等高級(jí)功能時(shí)就需要對(duì)這個(gè)html文件進(jìn)行注冊(cè)。
前端邏輯:
①html頁(yè)面初始化時(shí)向我們的后臺(tái)請(qǐng)求獲取基本配置數(shù)據(jù),參數(shù)就是當(dāng)前頁(yè)面url路徑,包括帶參部分。
②獲取到數(shù)據(jù)調(diào)用wx.config方法,對(duì)這個(gè)html頁(yè)面注冊(cè)(注意前提是html加載了js才可以調(diào)用<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>)
③config方法成功后,就可以愉快的使用一些高級(jí)功能了。
<!-- 這個(gè)地方是在加載配置,實(shí)際頁(yè)面中是頁(yè)面渲渲染時(shí)通過(guò)“java后臺(tái)jssdkconfig”接口從我們的后臺(tái)獲取參數(shù),然后賦值給下面對(duì)應(yīng)的字段”--> <script type="text/javascript"> wx.config({ debug: true,//是否開(kāi)啟調(diào)試 appId: 'wx97d97ea93ef96606',//小程序appid timestamp: '1534925207',//時(shí)間搓,單位秒 nonceStr: 'HT5Ab5moviaVdp7XegNnRBivrETgPmu2',//隨機(jī)字符串 signature: 'd73acd8eec5a4c1a6a86c7e0517bedff78e72fd9',//簽名md5 jsApiList: ['startRecord','stopRecord','playVoice','uploadVoice','downloadVoice','onVoiceRecordEnd','translateVoice','downloadVoice', 'onMenuShareTimeline','onMenuShareAppMessage','scanQRCode','getLocation','chooseImage','getLocalImgData','uploadImage']//當(dāng)前html需要用到的接口 }); </script>
后臺(tái)JAVA邏輯:
①頁(yè)面第一次請(qǐng)求獲取配置信息,后臺(tái)使用微信接口計(jì)算得到配置信息,并存起來(lái),然后返回給前端
②頁(yè)面不是第一次請(qǐng)求,不是大于兩小時(shí),直接找到對(duì)應(yīng)頁(yè)面的配置信息返回給用戶。大于2小時(shí),如果大于兩小時(shí)再次調(diào)用微信接口計(jì)算配置信息,返回用戶,更新存儲(chǔ)的數(shù)據(jù)。(這里我用的java類(lèi)存在內(nèi)存里面的,改成數(shù)據(jù)庫(kù)儲(chǔ)存可以相應(yīng)減輕服務(wù)端內(nèi)存)
③為什么要判斷是否超過(guò)兩小時(shí)在從新計(jì)算呢。因?yàn)榈谝豁?yè)面一般會(huì)刷新比較頻繁,其次微信的獲取jssdk配置接口有使用次數(shù)限制,每天只能獲取多少次,所以我們不能每次請(qǐng)求過(guò)來(lái)都去計(jì)算。
/** * webview——JSSDK使用配置信息獲取 */ @ResponseBody @RequestMapping(value = "User/GetJsSdk_Config") public Map<String, Object> GetJsSdk_Config(@RequestBody HashMap<String, Object> data, HttpSession session) throws KeyStoreException, NoSuchAlgorithmException, CertificateException, Exception { Map<String, Object> resultmap = new HashMap<String, Object>(); User user = (User) session.getAttribute("user"); if (user == null) { resultmap.put("state", false); resultmap.put("message", "未登錄或登錄超時(shí)"); return resultmap; } if (data.get("url") == null) { resultmap.put("state", false); resultmap.put("message", "參數(shù)不全"); return resultmap; } String url = data.get("url").toString(); Map<String, Object> one_jassdkcofig = AllJssdkConfig.TheconfigBeoVerdue(url); if (one_jassdkcofig != null)// 如果當(dāng)前頁(yè)面配置信息還未過(guò)期 { resultmap.put("sate", true); resultmap.put("message", ""); resultmap.put("beta", one_jassdkcofig.get("beta")); resultmap.put("debug", one_jassdkcofig.get("debug"));// 是否開(kāi)啟調(diào)試 resultmap.put("appId", one_jassdkcofig.get("appId"));// 公眾號(hào)的appid resultmap.put("timestamp", one_jassdkcofig.get("timestamp"));// 時(shí)間搓、秒 resultmap.put("nonceStr", one_jassdkcofig.get("nonceStr"));// 隨即字符 resultmap.put("signature", one_jassdkcofig.get("signature"));// sha1加密碼 resultmap.put("jsApiList", "所有需要用到的接口");// 需要使用的接口 System.out.println("找到配置!不用計(jì)算"); System.out.println(resultmap); return resultmap; } String token = user_wxAPI.GetInstance().get_jssdk_accesstoken(); String ticket = user_wxAPI.GetInstance().get_jssdk_ticket(token); resultmap = user_wxAPI.GetInstance().get_jssdk_config(ticket,url); if (resultmap!=null) { resultmap.put("sate", true); resultmap.put("message", ""); AllJssdkConfig.SaveOneConfig(url, resultmap);// 更新jasdk數(shù)組配置 System.out.println("沒(méi)有找到配置!重新計(jì)算"); System.out.println(resultmap); return resultmap; } else { resultmap=new HashMap<String, Object>(); resultmap.put("sate", false); resultmap.put("message", "后臺(tái)獲取jssdk_ticket出錯(cuò)"); return resultmap; } }
以上是“微信小程序怎樣使用webview調(diào)用微信掃一掃的功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。