做过微信生态运营的人,多半遇到过这样的需求:用户在短信、邮件或浏览器里点开一条链接,希望它能直接拉起微信小程序,而不是停在一个 H5 页面上干瞪眼。小程序运行在微信的封闭环境里,想从外面跳进去,得走官方认可的通道。目前常见的做法有三种,各自适合的场景不同,坑也不一样,下面挨个聊。

先说第一种,用微信官方的 URL Scheme。这是微信为小程序提供的外部唤起能力,本质是一串特殊格式的地址,手机识别到之后会先唤起微信,再打开对应的小程序页面。生成入口在小程序管理后台,登录后找到相关设置页,按提示配置就能拿到。拿到 Scheme 之后,把它拼进跳转链接,或者嵌到网页按钮、短信文案里都可以。用户一点,微信直接被拉起,整个路径非常短,特别适合短信营销、邮件推广这类完全脱离微信环境的投放场景。
不过 URL Scheme 并不是一劳永逸的东西。它的有效期通常在 30 天左右,过期即失效,点开只会报错。还有一点容易忽略:部分类型的 Scheme 是"一链一人",也就是一条链接只能被一个用户成功打开。如果要群发给成千上万的用户,就得生成支持多人访问的类型,或者用一个固定链接的 H5 页面做中转——链接先落到 H5,再由 H5 触发跳转。这样链接本身不变,哪怕印在海报上、写进已经投放的广告素材里,临时要换落地地址也来得及。
第二种是小程序之间的互相跳转,用 wx.navigateToMiniProgram 这个 API。如果你的场景不是从外部进小程序,而是在一个小程序里打开另一个小程序,这条路最直接。调用时传入目标小程序的 appId 和页面路径,还能通过 extraData 捎带参数过去:
wx.navigateToMiniProgram({
appId: '目标小程序的appId',
path: '目标页面路径',
extraData: { /<em> 需要传递的数据 </em>/ },
envVersion: 'develop'
})

envVersion 这个参数用来指定打开哪个版本——开发版、体验版还是正式版,默认是正式版,联调阶段记得改。被跳过去的小程序也不是两眼一抹黑,它能从启动信息里判断出用户是从哪个小程序过来的;用户用完想回去,调一下 wx.navigateBack 就能原路返回。要提醒的是,小程序互跳不是想跳就能跳的,目标小程序需要先配置进跳转名单,平台对数量和类目都有限制,上线前最好在后台确认清楚,免得审核或者运行时卡壳。
第三种最省事:借助第三方工具。市面上这类平台不少,填上小程序的 appId、页面路径等参数,一键生成跳转链接,有的还顺手做成短链,方便塞进短信和各种投放渠道。这类工具底层大多还是调用微信官方接口,只是帮你把流程封装好了,对没有开发资源的运营来说确实友好。但选工具得留个心眼:链接要经过人家的服务器,跳转稳定性和数据安全都捏在对方手里。尽量挑口碑好、运营时间长的平台,那些来路不明的小工具,轻则链接失效,重则可能带来信息泄露、页面内容被篡改的麻烦。
另外还有几个细节容易踩坑,提前知道能少熬几个夜。一是平台差异:iOS 对 URL Scheme 的识别比较顺畅,短信里直接点击就能唤起小程序;Android 则不行,系统不直接识别这类协议,不少浏览器和 WebView 还会拦截,所以安卓场景下基本都得经过 H5 中转一次。二是链接有效期要和投放周期匹配,别闹出广告还在跑、链接先过期的尴尬。三是如果跳转后需要统计来源、回传数据,最好在生成链接时就把参数规划好,事后补救的成本高得多。

最后简单说说怎么选:从短信、邮件、浏览器这些微信外场景引流,用 URL Scheme 配 H5 中转最稳;自家小程序矩阵之间导流,用 wx.navigateToMiniProgram;不想写代码,就挑一个靠谱的第三方工具。三条路没有绝对的好坏,关键看流量从哪来、手里有多少技术资源。链路理顺之后,用户从看到链接到进入小程序,往往就只差一次点击。
Войти сейчас