집 >위챗 애플릿 >미니 프로그램 개발 >WeChat 애플릿은 어떻게 webview를 사용하여 WeChat 스캔 기능을 호출합니까?
이 기사의 내용은 WeChat 애플릿이 WebView를 사용하여 WeChat 스캔 기능을 호출하는 방법에 대한 것입니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다. 너.
웹 개발을 할 때 웹 프로젝트를 작은 프로그램에 빠르게 이식해야 할 때 웹 개발 프로세스를 사용해야 합니다. 미니 프로그램에서 제공하는 웹뷰 컴포넌트입니다. 장점과 개발 플랫폼 구성은 위챗 공개 플랫폼에 맞춰서 구성하시면 됩니다
주로 웹뷰(html)에서 고급 기능을 활용하는 방법을 다루겠습니다.
우선 jssdk 구성을 얻지 못한 경우 점프 등 일부 기본 기능만 사용할 수 있습니다. 하지만 위챗 스캔, 웹뷰(당사 html)에서 사진 앨범 열기 등 고급 기능을 직접 호출하려면 이 html 파일을 등록해야 합니다.
프런트 엔드 로직:
①html 페이지 초기화 당사 백엔드에서 기본 구성 데이터를 요청할 때 매개변수는 매개변수 부분을 포함한 현재 페이지의 URL 경로입니다.
② 데이터를 가져오고 wx.config 메소드를 호출하여 이 HTML 페이지를 등록합니다. ( 전제는 c15ae5aa4968efe2435d52b2e900e9882cacc6d41bbb37262a98f745aa00fbf0)
③구성 방법이 성공한 후에는 몇 가지 고급 기능을 즐겁게 사용할 수 있습니다.
<!-- 这个地方是在加载配置,实际页面中是页面渲渲染时通过“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 로직:
①페이지가 처음으로 구성 정보를 요청합니다. 백그라운드는 WeChat 인터페이스를 사용하여 구성 정보를 계산하고 저장한 다음 프런트엔드에 반환합니다.
②페이지는 다음과 같습니다. 처음 요청하지 않았고, 요청 시간이 2시간을 넘지 않은 경우 해당 페이지의 구성 정보를 직접 찾아 사용자에게 반환합니다. 2시간 이상인 경우 WeChat 인터페이스를 다시 호출하여 구성 정보를 계산하고 사용자에게 반환하여 저장된 데이터를 업데이트합니다. (여기서 사용하는 Java 클래스는 메모리에 저장되어 있습니다. 데이터베이스 스토리지로 변경하면 그에 따라 서버 메모리가 줄어들 수 있습니다.)
③재계산하는데 왜 2시간 이상 걸리는지 판단해야 하나요? 첫 번째 페이지는 일반적으로 더 자주 새로 고쳐지고 두 번째로 WeChat의 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; } }
관련 권장 사항:
WeChat 개발 - WeChat v3 스캔 코드 결제에서 반환된 inform.php의 콜백 값을 받는 방법 2
위 내용은 WeChat 애플릿은 어떻게 webview를 사용하여 WeChat 스캔 기능을 호출합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!