App端跳转微信小程序必须使用plus.share.launchMiniProgram而非uni.navigateToMiniProgram,因后者仅在微信小程序环境有效;需确保微信已安装、plus.share服务可用且正确获取weixin对象,并严格按要求传入id(原始ID,gh_开头)、path(以/开头)、type(0/1/2整数)等参数。
App端跳转微信小程序必须用 plus.share.launchMiniProgram,不是 uni.navigateToMiniProgram
很多人一上来就写 uni.navigatetominiprogram,结果在 app 里完全没反应——这个 api 只在微信小程序环境有效,app 端根本不存在。app 跳微信小程序走的是 h5+ 的原生能力链路,核心是 plus.share 模块下的 launchminiprogram 方法。
调用前必须确认三件事:
• 当前设备已安装微信客户端
• plus.share 服务可用(plus.share 是 H5+ 提供的分享能力封装)
• 微信服务对象(id: "weixin")已正确获取
常见错误现象:
• 控制台报 plus is not defined → manifest.json 未开启 Share 权限或未打包自定义基座
• sweixin 为 null → 微信未安装,或 iOS 上未开启微信后台权限
• 调用后无任何反馈 → id 填了 AppID(错!必须填原始 ID,如 gh_xxxxxxxx)
launchMiniProgram 的参数必须严格匹配微信要求
参数名看着简单,但每个字段都有硬性校验规则,填错一个就静默失败:
-
id:必须是目标小程序的「原始 ID」,格式为gh_开头的字符串,不是 AppID;可在微信公众平台「设置 → 基本设置」里找到 -
path:可选,但若填写,需以/开头,且页面必须已在目标小程序的app.json或pages.json中注册;支持 query 参数,如/pages/order/detail?id=123 -
type:整数,仅接受0(正式版)、1(开发版)、2(体验版);传字符串或小写字符串(如"0")会失败 -
extraData:不支持;该字段仅在uni.navigateToMiniProgram中存在,launchMiniProgram不识别此参数
正确示例:
plus.share.getServices(res => {
const weixin = res.find(s => s.id === 'weixin');
if (weixin) {
weixin.launchMiniProgram({
id: 'gh_11af7705af70',
path: '/pages/index/index?from=uniapp',
type: 0
}, (res) => {
console.log('小程序已拉起', res);
}, (err) => {
console.error('拉起失败', err);
});
}
});
manifest.json 和微信开放平台配置缺一不可
代码写对只是第一步,真正卡住 80% 开发者的,是这两处配置没到位:
公众号运营:文章发布至草稿、样式封面、评论与用户管理、数据统计等。用户要求将 Markdown 发送到公众号草稿、查看阅读量统计或类似后台操作时,使用本技能。
- 微信开放平台:你的 App 必须在「开放平台 → 应用详情 → 关联小程序信息」中添加目标小程序的 AppID,并完成管理员扫码授权;审核通过前调用必失败(状态查「关联审核中」或「已关联」)
- manifest.json:
app-plus下必须启用 Share 模块,并在sdkConfigs.share.weixin中填入你在开放平台申请的 AppID(注意:这是开放平台的 AppID,不是小程序的) - Android 还需确认
permissions包含android.permission.INTERNET,否则无法唤起微信服务
典型错误现象:
• 报错 no permission 或 not bound → 开放平台未关联或未审核通过
• iOS 上点击无反应 → manifest.json 中未配置 UniversalLinks 或微信未开启后台运行权限
回调数据只能从微信返回到 App,不能直接传参回 uni-app 页面
launchMiniProgram 的 success 回调只表示“微信已成功拉起”,并不包含小程序内的业务数据。如果你需要小程序返回支付结果、订单号等,必须依赖微信的「小程序跳回 App」能力(即 wx.miniProgram.navigateBack + App 端监听 plus.runtime.iosOpenURL 或 Android 的 intent-filter),而不是指望 launchMiniProgram 的回调里拿到 extraData。
也就是说:
• App → 小程序:靠 launchMiniProgram 的 path 传简单参数(query 形式)
• 小程序 → App:必须单独配置 URL Scheme / Universal Links,并在 App 启动时解析启动参数
• 两者之间没有自动透传的双向上下文,所有数据流转都得自己设计协议和兜底逻辑
最容易被忽略的点:很多团队只做了 App 跳小程序,却忘了配小程序跳回 App 的反向通道,导致用户“跳过去就回不来”,整个闭环断裂。


















