温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

微信小程序怎样使用webview调用微信扫一扫的功能

发布时间:2020-12-21 11:46:57 来源:亿速云 阅读:606 作者:小新 栏目:移动开发

这篇文章主要介绍微信小程序怎样使用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