跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

uni-app怎么实现微信小程序的内嵌小程序跳转 uni-app跨小程序交互

uni.navigateToMiniProgram 调用失败主因是权限与配置缺失,需同时满足:目标小程序在 app.json 中配置 navigateToMiniProgramAppIdList 白名单、当前小程序开通跳转权限、仅真机支持;参数中 appId 和 envVersion 必须严格校验,extraData 需为 plain object,path 须以 / 开头且页面已注册。 uni.navigateToMiniProgram 调用失败的典型表现 点击后无反应、控制台报
err: invalid appid
或
fail no permission
,甚至直接静默失败——这基本不是代码写错了,而是权限或配置没到位。 微信 对跨小程序跳转有强管控,
uni.navigateToMiniProgram
必须同时满足三个硬条件:目标小程序已配置白名单、当前小程序已开通跳转权限、调用环境是真机(开发者工具不支持)。 必须在目标小程序 app.json 中声明 navigateToMiniProgramAppIdList 这是最容易被忽略的一步。哪怕你 uni-app 侧代码完全正确,只要被跳转的小程序(B 小程序)没在自己的
app.json
里把你的小程序 AppID 加进白名单,微信就会直接拦截请求。 打开 B 小程序项目根目录下的
app.json
添加字段:
"navigateToMiniProgramAppIdList": ["你的小程序AppID"]
(注意是字符串数组,不是单个字符串) 务必重新上传并发布 B 小程序新版本,仅本地修改无效 如果要支持多个来源小程序,就填多个 AppID,例如
["wx123...", "wx456..."]
uni.navigateToMiniProgram 的参数陷阱
appId
和
envVersion
是唯二强制校验项,其余都可为空但格式不能错。常见翻车点:
appId
字符串里不能有空格、换行或中文引号,复制时尤其注意全角/半角
envVersion
必须小写,且只接受
"develop"
/
"trial"
/
"release"
——写成
"Develop"
或
"production"
都会失败
extraData
是 plain object,不能是字符串或 null;传空对象
{}
安全,但别传
undefined
或
"{}"
path
必须以
/
开头,且目标页面需在 B 小程序的
pages.json
中注册过 示例正确调用: 微信公众平台开发入门教程 中文WORD版 由于微信的大热,为了更好的方便使用微信的用户查询一些信息,这篇文章是入门级的微信公众平台开发教程,需要的朋友可以参考下 这篇入门教程将引导你完成如下任务: 创建百度云平台应用启用微信公众平台开发模式获取订阅、文字、图片、语音、视频消息回复文本、图文及音乐消息程序开发 下载
uni.navigateToMiniProgram({ appId: 'wx1234567890abcdef', path: '/pages/detail/detail?id=123', extraData: { from: 'uniapp', scene: 1001 }, envVersion: 'release', success: (res) => console.log('跳转成功'), fail: (err) => console.error('跳转失败', err) })
真机调试前必须确认的三件事 模拟器和 HBuilderX 的“运行到小程序”功能无法触发真实跳转,所有测试必须在真机上进行,且需确保: 微信客户端已更新到最新版(旧版可能不识别
envVersion: "trial"
) 当前登录的微信账号,已在 B 小程序后台的「成员管理」中被设为体验者(仅当
envVersion: "trial"
时需要) uni-app 项目 manifest.json 中的「 微信小程序 AppID」已填写正确,否则
uni.navigateToMiniProgram
在小程序端根本不会注册 跳转后若 B 小程序启动但收不到
extraData
,大概率是它没在
App.onLaunch
或
App.onShow
的
options
参数里取值——这个数据不会自动挂到全局,必须手动解构。

相关文章