小程序之间互相跳转,在活动页、合作推广、客服引导这些场景里很常见。用户点一下按钮,当前小程序会退到后台,另一个小程序被拉起来。有人把它说成“退出当前小程序并跳转链接”,听起来像彻底关掉了,其实更像一次切换。微信官方提供的 wx.navigateToMiniProgram 接口,就是用来完成这个动作的。

这个接口本身不算复杂,但有一个前置条件很容易被忽略:目标小程序的 appId 必须提前写进全局配置。这个配置位于小程序的 app.json 文件里,字段名是 navigateToMiniProgramAppIdList。如果漏了这一步,调用接口时会直接进入 fail 回调,跳转不会成功。配置格式大致如下:
{
"navigateToMiniProgramAppIdList": [
"目标小程序的appId"
]
}
可以把
navigateToMiniProgramAppIdList 理解成一份白名单,只有出现在这个数组里的小程序才允许被跳转。后续如果有新的合作小程序,往数组里继续追加 appId 即可。接下来是页面里的跳转逻辑。通常会在需要触发跳转的页面写一个事件处理函数,点击按钮后执行。wxml 里可以放一个按钮:
<button bindtap="navigateToMiniProgram">跳转链接</button>
对应的 js 可以这样组织:
Page({
navigateToMiniProgram() {
wx.navigateToMiniProgram({
appId: '目标小程序的appId',
path: '目标页面的路径',
success(res) {
console.log(res);
},
fail(res) {
console.log(res);
}
});
}
});

这里的
appId 必须和 app.json 白名单里的配置一致。path 用来指定打开目标小程序里的哪个页面,如果只想打开默认首页,这一项可以省略;要跳到具体页面时,就按目标小程序的页面路径来填,例如 pages/detail/detail?id=123。success 和 fail 两个回调不是必填项,但开发阶段建议保留:success 能确认跳转是否成功,fail 能快速看到错误原因,比如 appId 没声明、路径不对、基础库版本不支持等。用户点击后,当前小程序会退到后台,目标小程序被打开。整个流程里有两处 appId 必须保持一致:一处是
app.json 里的白名单,另一处是代码里传入的 appId。任何一处写错,跳转都不会生效。这种跳转方式在合作小程序之间很常见,比如从活动页跳到会员小程序,或者从内容小程序跳到工具小程序。它让用户不用退出微信环境就能在不同小程序之间流动,省去了反复搜索、切换的步骤。对开发者来说,把白名单配置好、路径写准、按钮入口做清晰,这个流程基本就能跑通。
今すぐログイン