Heim > Artikel > WeChat-Applet > Wie ruft das WeChat-Applet mithilfe von Webview die WeChat-Scanfunktion auf?
Der Inhalt dieses Artikels handelt davon, wie das WeChat-Applet Webview verwendet, um die WeChat-Scanfunktion aufzurufen. Ich hoffe, es wird Ihnen helfen .
Bei der Webentwicklung folgen wir dem Webentwicklungsprozess. Wenn wir das Webprojekt schnell in das Miniprogramm übertragen müssen, müssen wir die von bereitgestellte Webansicht verwenden Die Mini-Komponenten. Was seine Vorteile und die Konfiguration der Entwicklungsplattform betrifft, können Sie es entsprechend der öffentlichen WeChat-Plattform konfigurieren.
Ich werde hauptsächlich über die Verwendung erweiterter Funktionen in Webview (HTML) sprechen.
Zuallererst: Wenn wir die JSSDK-Konfiguration nicht erhalten, können wir nur einige Grundfunktionen wie Sprünge verwenden. Wenn Sie jedoch erweiterte Funktionen wie das WeChat-Scannen und das Öffnen von Fotoalben in der Webansicht (unserem HTML) direkt aufrufen möchten, müssen Sie diese HTML-Datei registrieren.
Front-End-Logik:
①Wenn die HTML-Seite initialisiert ist, fordern Sie unser Backend an Um grundlegende Konfigurationsdaten zu erhalten, ist der Parameter der URL-Pfad der aktuellen Seite, einschließlich des Parameterteils.
② Rufen Sie die Daten ab und rufen Sie die Methode wx.config auf, um diese HTML-Seite zu registrieren (beachten Sie, dass die Voraussetzung ist, dass der HTML-Code js geladen hat, bevor Sie c81d3a76c4c3b0472c89f71de40bbb9d2cacc6d41bbb37262a98f745aa00fbf0)
③Nachdem die Konfigurationsmethode erfolgreich war, können Sie problemlos einige erweiterte Funktionen verwenden.
<!-- 这个地方是在加载配置,实际页面中是页面渲渲染时通过“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>
Backend-JAVA-Logik:
①Seiten-Nr. Es wird eine Anforderung zum Abrufen der Konfigurationsinformationen gestellt. Der Hintergrund verwendet die WeChat-Schnittstelle, um die Konfigurationsinformationen zu berechnen, sie zusammen zu speichern und sie dann an das Frontend zurückzugeben.
② Wenn die Seite nicht zum ersten Mal angefordert wird, und Wenn es nicht mehr als zwei Stunden her ist, werden die Konfigurationsinformationen der entsprechenden Seite direkt gefunden und an den Benutzer zurückgegeben. Bei mehr als 2 Stunden wird die WeChat-Schnittstelle erneut aufgerufen, um die Konfigurationsinformationen zu berechnen, zum Benutzer zurückzukehren und die gespeicherten Daten zu aktualisieren. (Die Java-Klasse, die ich hier verwende, wird im Speicher gespeichert. Der Wechsel zum Datenbankspeicher kann den Serverspeicher entsprechend reduzieren.)
③Warum müssen Sie beurteilen, ob die Neuberechnung mehr als zwei Stunden dauert? Da die erste Seite im Allgemeinen häufiger aktualisiert wird und zweitens die jssdk-Konfigurationsschnittstelle von WeChat nur begrenzt oft verwendet werden kann und nur mehrmals am Tag abgerufen werden kann, können wir sie nicht jedes Mal berechnen wir fordern es.
/** * 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; } }
Verwandte Empfehlungen:
WeChat-Entwicklung WeChat-Scan-Login
Das obige ist der detaillierte Inhalt vonWie ruft das WeChat-Applet mithilfe von Webview die WeChat-Scanfunktion auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!