返回

微信拉起小程序源码修改之应用解惑

前端

拉起小程序:React Native 集成微信小程序支付

小程序与 App 关联

首先,让我们将小程序与 App 关联起来。登录微信公众平台,前往小程序管理页面。点击“开发”->“开发设置”->“关联关系”->“关联原生 App”。按照提示填写 App 的名称、包名和签名等信息即可完成关联。

修改源码

现在,我们需要修改微信小程序 SDK 的源码来启用拉起小程序的功能。下载 react-native-wechat 库并找到 lib/ios/RCTWXApi.m 文件。找到以下代码:

- (void)sendReq:(WXBaseReq *)req
{
    if ([req isKindOfClass:[WXLaunchMiniProgramReq class]]) {
        // 拉起小程序
        WXLaunchMiniProgramReq *launchMiniProgramReq = (WXLaunchMiniProgramReq *)req;
        BOOL b = [WXApi sendReq:launchMiniProgramReq];
    } else {
        // 发送其他请求
        [WXApi sendReq:req];
    }
}

将这段代码修改为:

- (void)sendReq:(WXBaseReq *)req
{
    if ([req isKindOfClass:[WXLaunchMiniProgramReq class]]) {
        // 拉起小程序
        WXLaunchMiniProgramReq *launchMiniProgramReq = (WXLaunchMiniProgramReq *)req;
        // 修改 launchMiniProgramReq.miniProgramType
        launchMiniProgramReq.miniProgramType = WXMiniProgramTypeRelease;
        // 修改 launchMiniProgramReq.miniProgramPath
        launchMiniProgramReq.miniProgramPath = @"pages/index/index";
        BOOL b = [WXApi sendReq:launchMiniProgramReq];
    } else {
        // 发送其他请求
        [WXApi sendReq:req];
    }
}

使用方法

修改源码后,我们就可以在 React Native 项目中使用以下代码拉起小程序:

import WXApi from 'react-native-wechat';

const launchMiniProgram = async () => {
  const req = new WXLaunchMiniProgramReq();
  req.miniProgramType = WXMiniProgramTypeRelease; // 正式版
  req.miniProgramPath = 'pages/index/index'; // 小程序路径
  await WXApi.send(req);
};

常见问题解答

1. 拉起小程序失败,提示“未找到指定小程序”

  • 确保小程序与 App 已关联。
  • 检查小程序路径是否正确。

2. 拉起小程序后,页面空白

  • 检查小程序代码中是否导入了必要的组件。
  • 确保小程序已发布至正式版。

3. 如何拉起非正式版小程序?

  • launchMiniProgramReq.miniProgramType 中设置 WXMiniProgramTypeTest
  • launchMiniProgramReq.miniProgramPath 中设置测试版本的小程序路径。

4. 如何在拉起小程序后传递参数?

  • 使用 launchMiniProgramReq.extMsg 属性传递参数。

5. 如何在小程序端处理来自 App 的参数?

  • 在小程序的 onLaunch 方法中使用 wx.getLaunchOptionsSync() 方法获取参数。