ホームページ  >  記事  >  WeChat アプレット  >  WeChat アプレットはどのように Webview を使用して WeChat スキャン機能を呼び出しますか?

WeChat アプレットはどのように Webview を使用して WeChat スキャン機能を呼び出しますか?

不言
不言オリジナル
2018-09-06 11:48:348225ブラウズ

この記事の内容は、WeChat アプレットが Webview を使用して WeChat スキャン関数を呼び出す方法についてです。必要な友人が参考になれば幸いです。

Web 開発を行うときは、Web 開発プロセスに従います。Web プロジェクトをミニ プログラムにすぐに移植する必要がある場合は、ミニ プログラムによって提供される Webview コンポーネントを使用する必要があります。その利点と開発プラットフォームの構成については、WeChat パブリック プラットフォームに従って構成できます
主に WebView (HTML) の高度な機能の使用方法について説明します。
まず第一に、jssdk 設定を取得しない場合、ジャンプなどのいくつかの基本的な機能しか使用できません。ただし、WeChat スキャンや Web ビュー (HTML) でフォト アルバムを開くなどの高度な機能を直接呼び出す場合は、この HTML ファイルを登録する必要があります。

フロントエンドロジック:

具体的なプロセスは次のとおりです:

① HTML ページが初期化されるとき、パラメーターは、パラメーター部分を含む現在のページの URL パスです。 。
② データを取得し、wx.config メソッドを呼び出して、この HTML ページを登録します (61098294e91b46c94983aae653a7874c2cacc6d41bbb37262a98f745aa00fbf0)
③設定メソッドが成功すると、いくつかの高度な機能を使用できるようになります。

詳細コード表示

<!-- 这个地方是在加载配置,实际页面中是页面渲渲染时通过“java后台jssdkconfig”接口从我们的后台获取参数,然后赋值给下面对应的字段”-->
  <script type="text/javascript">
        wx.config({
           debug: true,//是否开启调试
           appId: &#39;wx97d97ea93ef96606&#39;,//小程序appid
           timestamp: &#39;1534925207&#39;,//时间搓,单位秒
           nonceStr: &#39;HT5Ab5moviaVdp7XegNnRBivrETgPmu2&#39;,//随机字符串
           signature: &#39;d73acd8eec5a4c1a6a86c7e0517bedff78e72fd9&#39;,//签名md5
           jsApiList: [&#39;startRecord&#39;,&#39;stopRecord&#39;,&#39;playVoice&#39;,&#39;uploadVoice&#39;,&#39;downloadVoice&#39;,&#39;onVoiceRecordEnd&#39;,&#39;translateVoice&#39;,&#39;downloadVoice&#39;, &#39;onMenuShareTimeline&#39;,&#39;onMenuShareAppMessage&#39;,&#39;scanQRCode&#39;,&#39;getLocation&#39;,&#39;chooseImage&#39;,&#39;getLocalImgData&#39;,&#39;uploadImage&#39;]//当前html需要用到的接口
          });
  </script>

バックエンドJAVAロジック:

処理プロセス:

①バックグラウンドはWeChatインターフェイスを使用して構成情報を計算し、保存します。フロントエンドに返します
② ページが初めてリクエストされておらず、作成されてから 2 時間以内であれば、対応するページの構成情報が直接検索され、ユーザーに返されます。 2 時間を超える場合は、WeChat インターフェイスが再度呼び出され、構成情報が計算され、ユーザーに返され、保存されたデータが更新されます。 (ここで使用する Java クラスはメモリに保存されています。データベースストレージに変更すると、その分サーバーのメモリが削減されます)
③再計算に 2 時間以上かかるかどうかを判断する必要があるのはなぜですか?一般に、最初のページはより頻繁に更新され、次に WeChat の jssdk 設定インターフェースには使用回数に制限があり、1 日に何回しか取得できないため、毎回計算することはできません。私たちはそれを要求します。

バックエンドコード:

 /**
     * 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;
        }
    }

関連する推奨事項:

WeChat開発 WeChatスキャンログイン

WeChat開発 - WeChat v3スキャンコード支払い2によって返されるnotify.phpのコールバック値を受け取る方法

WeChat を共有する スキャン コード決済開発で遭遇した問題と解決策 - Ecshop WeChat 決済 plug-in_php の例を添付します

以上がWeChat アプレットはどのように Webview を使用して WeChat スキャン機能を呼び出しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。