uni-app App端朋友圈分享需用原生插件而非uni.share,必须配置微信SDK、正确生成本地图片路径、传webpage类型带合法HTTPS链接,四者缺一不可。

uni-app App端截图后无法调起微信朋友圈分享?先确认是否用了原生插件
纯 uni.share API 在 App 端不支持朋友圈(timeline)类型,必须走原生插件。如果你调用 uni.share 传了 { provider: 'weixin', scene: 'WXSceneTimeline' } 却没反应,大概率是没集成原生微信 SDK 或插件未启用朋友圈能力。
Android/iOS 微信 SDK 必须单独配置,且版本要匹配插件要求
uni-app 官方插件市场里的「微信分享」插件(如 uni-wechat-sdk)依赖原生 SDK。不配好底层 SDK,截图再完整也发不出去。
- Android:需在
nativeplugins/android/config.json中填入正确的appid、universalLink(iOS 也需),并确保WXApi.registerApp在Application初始化时被调用 - iOS:必须在
nativeplugins/ios/config.json配置appid和universalLink,且 Xcode 工程里已开启 Associated Domains,并添加微信要求的applinks:xxx.xxx.com - 常见报错:
ErrCode: -6(发送失败)或WXErrCode_WXAppExtendNotSupport,基本是 SDK 版本太低或未注册成功
截图必须转成本地文件路径,不能直接传 base64 给微信插件
微信原生 SDK 要求分享的图片是本地文件(file:// 或 _www 路径),uni.canvasToTempFilePath 或 uni.createSelectorQuery 截图后得到的是临时路径,但部分安卓机型会返回 data: 开头的 base64 —— 这种微信直接拒绝。
- 务必用
uni.getFileSystemManager().writeFile把截图数据写入uni.env.USER_DATA_PATH下的文件,再传该路径给插件 - 示例关键步骤:
const filePath = `${uni.env.USER_DATA_PATH}/share_${Date.now()}.png`; uni.getFileSystemManager().writeFile({ filePath, data: tempFile.data, // canvasToTempFilePath 返回的 ArrayBuffer encoding: 'binary', success: () => { wechatPlugin.shareImage({ path: filePath, scene: 'WXSceneTimeline' }); } }); - iOS 上若路径含中文或特殊字符,可能失败;建议用时间戳 + 随机数命名,全英文小写
朋友圈分享必须用「图片+链接」组合,纯图会被微信拦截
微信对 App 分享到朋友圈有强限制:单图分享仅限公众号、小程序等白名单主体。普通 App 必须带跳转链接(webpage 类型),否则调用成功但实际不显示。
- 插件调用时需传
type: 'webpage',即使你只想突出图片,imageUrl是截图路径,webpageUrl是落地页(如 H5 活动页) - 链接必须备案、HTTPS、且域名加进微信开放平台「业务域名」白名单,否则 iOS 会提示「网页链接不合法」
- Android 对链接校验稍松,但上线前务必两端都测通,别只看 Android 成功就上线
真正卡住人的往往不是截图逻辑,而是微信侧的配置闭环没跑通——SDK 注册、universalLink、业务域名、插件参数类型,四个点漏一个,朋友圈就静默失败。



















