You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Flutter Web中打开微信小程序?及JSSDK调用方法咨询

在Flutter Web中打开微信小程序的实现方案

我来帮你梳理下具体的实现步骤,你已经成功引入了微信JSSDK,接下来主要搞定权限验证Flutter与JS的交互这两块就能实现需求:

一、先完成微信JSSDK的权限验证(必做前置步骤)

微信JSSDK的所有接口调用前都必须通过config接口注入权限验证配置,否则wx.miniProgram相关方法会直接失效。在Flutter Web里,我们需要借助dart:js包来和浏览器的JS环境交互。

具体操作:

  1. 先在你的Flutter Dart文件中导入dart:js
import 'dart:js' as js;
  1. 从后端获取权限验证所需参数:appIdtimestampnonceStrsignature(这些参数需要后端按照微信官方签名算法生成,前端仅需调用接口获取)。

  2. 调用微信config方法完成初始化:

void initWxJSSDK() {
  // 假设已从后端拿到以下参数
  String appId = "你的公众号APPID";
  String timestamp = "后端生成的时间戳";
  String nonceStr = "后端生成的随机字符串";
  String signature = "后端生成的签名";

  // 通过dart:js调用window.wx.config
  js.context["wx"].callMethod("config", [
    {
      "debug": false, // 开发阶段可设为true,方便查看调试日志
      "appId": appId,
      "timestamp": timestamp,
      "nonceStr": nonceStr,
      "signature": signature,
      "jsApiList": [], // 打开小程序不需要在此处添加API,miniProgram是独立模块
    }
  ]);

  // 监听初始化成功回调
  js.context["wx"].callMethod("ready", [
    () {
      print("JSSDK初始化完成,现在可以调用小程序跳转方法了");
    }
  ]);

  // 监听初始化失败回调
  js.context["wx"].callMethod("error", [
    (err) {
      print("JSSDK初始化失败:$err");
    }
  ]);
}

二、调用wx.miniProgram.navigateTo打开小程序

当JSSDK初始化成功后,就可以通过dart:js调用微信的小程序跳转方法了:

实现代码:

void openWechatMiniProgram() {
  // 先判断当前环境是否为微信浏览器(wx对象是否存在)
  if (js.context.hasProperty("wx")) {
    js.context["wx"].callMethod("miniProgram.navigateTo", [
      {
        "url": "/pages/target-page/target-page", // 小程序目标页面的绝对路径,必须以/开头
        "envVersion": "release" // 可选:develop(开发版)、trial(体验版)、release(正式版),默认正式版
      }
    ]);
  } else {
    print("当前环境不是微信内置浏览器,无法调用微信JSSDK");
  }
}

三、关键注意事项

  • 环境限制:必须在微信内置浏览器中打开你的Flutter Web页面,其他浏览器不存在wx对象,无法调用相关接口。
  • 公众号关联配置:你的公众号必须已关联目标小程序,且Flutter Web的部署域名要添加到公众号的「JS接口安全域名」列表中。
  • 路径格式url参数必须是小程序内的绝对路径,以/开头,比如/pages/home/index,不能使用相对路径。
  • 签名正确性config中的signature必须由后端严格按照微信官方算法生成,参数错误会直接导致初始化失败。

内容的提问来源于stack exchange,提问作者Joyce

火山引擎 最新活动