必须由用户点击触发微信跳转,不能在复制回调中直接调用跳转api;正确做法是复制后弹出“去微信”按钮,点击后才调起微信小程序,且需按平台区分实现并配置相应权限。

复制成功后触发微信跳转的常见误区
直接调用 uni.navigateToMiniProgram 或 plus.share.getServices 在复制回调里执行,大概率失败——因为微信跳转必须由用户主动触发(如点击事件),而复制完成属于异步回调,浏览器/小程序引擎会判定为“非用户手势”,直接拦截。
必须用「点击态」兜底才能触发微信跳转
真实可行的做法是:复制操作本身不跳转,而是立刻弹出一个带「去微信」按钮的提示层,且该按钮绑定原生点击事件。用户点一下,才真正调起微信。
-
uni.copyString成功后,用uni.showToast或自定义弹窗提示「复制成功」,同时显示一个高亮按钮 - 按钮的
@click里区分平台:#ifdef MP-WEIXIN走uni.navigateToMiniProgram;#ifdef APP-PLUS走plus.share.getServices+launchMiniProgram - 不要在
copyString的success回调里直接跳转,哪怕加setTimeout也不行——引擎不认
APP 端跳微信小程序必须配置 manifest.json
没配好权限,plus.share.getServices 拿不到 weixin 实例,sweixin 会是 null,后续调用直接报错或静默失败。
- 打开
manifest.json→「App 模块权限配置」→ 勾选Share - 「App SDK 配置」→「分享」→ 填写微信开放平台的
AppID和AppSecret(注意:不是公众号的) - 打包时必须用「自定义调试基座」,HBuilderX 默认基座不带微信 SDK
微信小程序内跳其他小程序,路径和 appId 别写错
uni.navigateToMiniProgram 的 appId 必须是目标小程序的「正式 AppID」(不是原始 ID),且 path 不能带 pages/ 前缀(除非你明确写了完整路径),否则跳转白屏或 404。
- 正确写法:
appId: 'wxf123456789',path: 'mall/detail?id=123' - 错误写法:
appId: 'gh_xxxxxxx'(这是原始 ID,仅用于 APP 端launchMiniProgram的id字段) - H5 环境下该 API 不可用,必须包裹
#ifdef MP-WEIXIN条件编译











