uni-app 开发微信公众号(H5)JSSDK 的使用方式

发布于 1周前 作者 zlyuanteng 来自 Uni-App

uni-app 开发微信公众号(H5)JSSDK 的使用方式

方案一:模块化

在 uni-app 中可以使用模块方式引用微信 js-sdk ,可以避免与 uni-app 内置 wx 全局对象冲突的问题。

微信官网直接下载的如果使用有问题,可以使用 jweixin-module

安装

NPM安装方式(不会用NPM就不要用这种方式)

npm install jweixin-module --save

下载使用方式

下载地址:https://unpkg.com/jweixin-module@1.6.0/lib/index.js

使用

var jWeixin = require('jweixin-module')
jWeixin.ready(function(){  
    // TODO  
});

方案二:全局引入

如果不使用模块化引入 JS-SDK,而采用传统方式在 html 模板中直接全局引入,可以修改全局变量名称。

<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>
            <%= htmlWebpackPlugin.options.title %>
        </title>
        <script>
            var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
            document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')
        </script>
        <script src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
        <script>
            window.jWeixin=window.wx;
            delete window.wx;
        </script>
        <link rel="stylesheet" href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css">
    </head>
    <body>
        <noscript>
            <strong>Please enable JavaScript to continue.</strong>
        </noscript>
        <div id="app"></div>
    </body>
</html>

完整API

微信JS-SDK说明文档


1 回复

在uni-app中开发微信公众号并使用H5 JSSDK,主要涉及到配置微信公众号的相关参数、引入JSSDK、调用相关接口等步骤。以下是一个简单的代码案例,展示如何在uni-app中实现这一过程。

1. 配置微信公众号

首先,你需要在微信公众平台上获取AppID和AppSecret,并确保你的公众号已通过认证,已获得JS接口安全域名等权限。

2. 引入JSSDK

在uni-app的H5页面中,你可以通过<script>标签引入微信JSSDK。

<template>
  <view>
    <!-- 你的页面内容 -->
  </view>
</template>

<script>
export default {
  onLoad() {
    // 判断是否在微信环境
    if (typeof wx !== 'undefined') {
      // 引入微信JSSDK
      const script = document.createElement('script');
      script.src = 'https://res.wx.qq.com/open/js/jweixin-1.6.0.js';
      script.onload = () => {
        this.initJSSDK();
      };
      document.head.appendChild(script);
    }
  },
  methods: {
    initJSSDK() {
      // 这里填写你的公众号AppID
      const appId = 'YOUR_APP_ID';
      // 获取签名所需的参数,这里假设你有一个后端接口可以提供签名
      uni.request({
        url: 'https://your-backend-api/getSignature',
        method: 'POST',
        data: {
          url: window.location.href.split('#')[0] // 当前页面的URL
        },
        success: (res) => {
          const signatureData = res.data;
          wx.config({
            debug: false, // 开启调试模式
            appId,
            timestamp: signatureData.timestamp,
            nonceStr: signatureData.nonceStr,
            signature: signatureData.signature,
            jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage'] // 需要使用的JS接口列表
          });

          wx.ready(() => {
            // 接口调用成功
            wx.onMenuShareTimeline({
              title: '分享标题',
              link: window.location.href,
              imgUrl: '分享图标URL',
              success: () => {
                // 用户确认分享后执行的回调函数
              },
              cancel: () => {
                // 用户取消分享后执行的回调函数
              }
            });

            wx.onMenuShareAppMessage({
              title: '分享标题',
              desc: '分享描述',
              link: window.location.href,
              imgUrl: '分享图标URL',
              type: '', // 分享类型,music、video或link,不填默认为link
              dataUrl: '', // 如果type是music或者video,则要提供数据链接,默认为空
              success: () => {
                // 用户确认分享后执行的回调函数
              },
              cancel: () => {
                // 用户取消分享后执行的回调函数
              }
            });
          });

          wx.error((err) => {
            // 接口调用失败
            console.error('wx error:', err);
          });
        },
        fail: (err) => {
          console.error('Request failed:', err);
        }
      });
    }
  }
};
</script>

注意事项

  • 确保你的后端接口能够正确生成签名。签名生成逻辑需要用到AppID、AppSecret、当前URL以及一个随机字符串和时间戳。
  • 在调用wx.config之前,请确保window.location.href是当前页面的完整URL(不包括hash部分)。
  • jsApiList中填写你需要使用的微信JSSDK接口名称。

以上代码案例展示了如何在uni-app的H5页面中引入并使用微信JSSDK。你可以根据实际需求进行调整和扩展。

回到顶部