亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序怎樣使用webview調用微信掃一掃的功能

發布時間:2020-12-21 11:46:57 來源:億速云 閱讀:636 作者:小新 欄目:移動開發

這篇文章主要介紹微信小程序怎樣使用webview調用微信掃一掃的功能,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

我們在做web開發時是按照web開發流程進行的,當需要快速將web項目移植到小程序里面,就需要用到小程序提供的webview組件。關于它的好處以及開發平臺配置大家可以按照微信公眾平臺進行配置
我這里主要說下怎么在webview(html)里面使用高級功能。
首先:在不獲取jssdk配置時,我們只能使用跳轉等一些基礎函數。但是涉及到要在webview(我們的html)里面直接調用微信掃一掃、打開相冊等高級功能時就需要對這個html文件進行注冊。

前端邏輯:

具體流程是:

①html頁面初始化時向我們的后臺請求獲取基本配置數據,參數就是當前頁面url路徑,包括帶參部分。
         ②獲取到數據調用wx.config方法,對這個html頁面注冊(注意前提是html加載了js才可以調用<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>)
         ③config方法成功后,就可以愉快的使用一些高級功能了。

具體代碼展示

<!-- 這個地方是在加載配置,實際頁面中是頁面渲渲染時通過“java后臺jssdkconfig”接口從我們的后臺獲取參數,然后賦值給下面對應的字段”-->
  <script type="text/javascript">
        wx.config({
           debug: true,//是否開啟調試
           appId: 'wx97d97ea93ef96606',//小程序appid
           timestamp: '1534925207',//時間搓,單位秒
           nonceStr: 'HT5Ab5moviaVdp7XegNnRBivrETgPmu2',//隨機字符串
           signature: 'd73acd8eec5a4c1a6a86c7e0517bedff78e72fd9',//簽名md5
           jsApiList: ['startRecord','stopRecord','playVoice','uploadVoice','downloadVoice','onVoiceRecordEnd','translateVoice','downloadVoice', 'onMenuShareTimeline','onMenuShareAppMessage','scanQRCode','getLocation','chooseImage','getLocalImgData','uploadImage']//當前html需要用到的接口
          });
  </script>

后臺JAVA邏輯:

處理流程:

①頁面第一次請求獲取配置信息,后臺使用微信接口計算得到配置信息,并存起來,然后返回給前端
   ②頁面不是第一次請求,不是大于兩小時,直接找到對應頁面的配置信息返回給用戶。大于2小時,如果大于兩小時再次調用微信接口計算配置信息,返回用戶,更新存儲的數據。(這里我用的java類存在內存里面的,改成數據庫儲存可以相應減輕服務端內存)
   ③為什么要判斷是否超過兩小時在從新計算呢。因為第一頁面一般會刷新比較頻繁,其次微信的獲取jssdk配置接口有使用次數限制,每天只能獲取多少次,所以我們不能每次請求過來都去計算。

后臺代碼:

 /**
     * 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", "未登錄或登錄超時");
            return resultmap;
        }
        if (data.get("url") == null) {
            resultmap.put("state", false);
            resultmap.put("message", "參數不全");
            return resultmap;
        }
        String url = data.get("url").toString();

        Map<String, Object> one_jassdkcofig = AllJssdkConfig.TheconfigBeoVerdue(url);
        if (one_jassdkcofig != null)// 如果當前頁面配置信息還未過期
        {
            resultmap.put("sate", true);
            resultmap.put("message", "");
            resultmap.put("beta", one_jassdkcofig.get("beta"));
            resultmap.put("debug", one_jassdkcofig.get("debug"));// 是否開啟調試
            resultmap.put("appId", one_jassdkcofig.get("appId"));// 公眾號的appid
            resultmap.put("timestamp", one_jassdkcofig.get("timestamp"));// 時間搓、秒
            resultmap.put("nonceStr", one_jassdkcofig.get("nonceStr"));// 隨即字符
            resultmap.put("signature", one_jassdkcofig.get("signature"));// sha1加密碼
            resultmap.put("jsApiList", "所有需要用到的接口");// 需要使用的接口
            System.out.println("找到配置!不用計算");
            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數組配置
            System.out.println("沒有找到配置!重新計算");
            System.out.println(resultmap);
            return resultmap;
        } else {
            resultmap=new HashMap<String, Object>();
            resultmap.put("sate", false);
            resultmap.put("message", "后臺獲取jssdk_ticket出錯");
            return resultmap;
        }
    }

以上是“微信小程序怎樣使用webview調用微信掃一掃的功能”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴业县| 峨眉山市| 泊头市| 雷山县| 定西市| 宜宾县| 叙永县| 山阴县| 钦州市| 嘉定区| 喜德县| 兖州市| 安达市| 博乐市| 晋江市| 林芝县| 昌黎县| 桐庐县| 望城县| 凤凰县| 巴塘县| 福泉市| 遵义县| 宁明县| 申扎县| 神木县| 龙山县| 光泽县| 邯郸县| 扎囊县| 广德县| 台湾省| 石棉县| 五大连池市| 麻栗坡县| 南澳县| 七台河市| 太保市| 富阳市| 庆阳市| 晋中市|