应优先使用 uni.sharewithsystem 而非 uni.share,因后者在 app 端依赖未集成的原生 sdk、受微信白名单限制且自 2025 年起禁止非备案应用调用;uni.sharewithsystem 需严格按平台规范传参:imageurl 或 file 必须为本地绝对路径,android 要求图片存于公共目录,ios 建议路径不含中文或空格;朋友圈分享无法通过该 api 实现,必须使用原生插件并满足微信 sdk 全套配置。

直接用 uni.shareWithSystem,别碰 uni.share —— 后者在 App 端基本不工作,且配置成本高、白名单卡死、2025 年起微信已限制非备案应用调用。
为什么 uni.share 在 App 端大概率失败
你写 uni.share({ provider: 'weixin' }) 却没反应,不是代码错,是底层根本没通:
- 它依赖微信/QQ 原生 SDK 集成,需在
nativeplugins/android/config.json和nativeplugins/ios/config.json中填 AppID、Universal Link,并确保 SDK 已注册(如WXApi.registerApp) - 从 2025 年起,微信官方禁止未进白名单的 App 通过 SDK 分享自定义消息或文件,只剩“小程序卡片”一种可用形式
- 即使配齐,Android/iOS 对签名、证书、包名一致性要求极严,一个字符错就报
ErrCode: -6或WXErrCode_WXAppExtendNotSupport
uni.shareWithSystem 的参数怎么填才不白屏
这个 API 表面简单,但 Android 和 iOS 对字段容忍度差异大,错一个就只发文字、不带图、甚至静默失败:
-
imageUrl必须是本地绝对路径(如/storage/emulated/0/Pictures/share.png),不能是 HTTPS 链接;iOS 虽支持 HTTPS,但建议统一走缓存,避免部分机型 fallback 失败 - 分享类型由字段组合隐式决定:
type: 'image'+imageUrl→ 图片分享;只有summary+href→ 文本+链接;传file字段(且必须是本地绝对路径)→ 文件分享(PDF/Excel) -
title在 Android 上基本无效,iOS 会作为系统分享面板标题;真正影响微信/QQ 接收端显示的是summary(描述)和href(点击跳转链接) - Android 10+ 要求图片必须存于公共目录(如
Documents或Pictures),得先用uni.saveFile写入,再用uni.getSavedFileList拿真实路径,别直接传tempFilePath
PDF/Excel 等文件分享怎么落地
产品经理说“一键分享报告”,uni.shareWithSystem 原生支持,但要补两步手动操作:
- 先下载或生成文件:用
uni.downloadFile把线上 PDF 拉到本地;或用uni.canvasToTempFilePath截图后,再用uni.getFileSystemManager().writeFile写入uni.env.USER_DATA_PATH下的合法路径 - 传参时必须显式使用
file字段:{ file: '/storage/emulated/0/Documents/report.pdf', summary: '本月销售报告' }—— 注意不是imageUrl,也不是href - iOS 上路径含中文或空格易失败,建议用时间戳 + 小写随机字符串命名,例如
report_1749807642_abcd.pdf
朋友圈分享为什么不能只靠 uni.shareWithSystem
它能呼起系统面板,但微信朋友圈(WXSceneTimeline)是特例:系统面板里点“微信朋友圈”,实际仍走微信 SDK 通道,uni.shareWithSystem 不接管这一层。
所以如果你目标是“截图→发朋友圈”,必须:
- 放弃
uni.shareWithSystem,改用原生插件(如uni-wechat-sdk) - 安卓/iOS 都要配好微信 SDK、AppID、Universal Link,且 Xcode 开启 Associated Domains
- 截图必须存为本地文件(
file://路径),不能传 base64;且必须是type: 'webpage'+imageUrl+webpageUrl三者齐全,纯图会被微信拦截
真正的“系统级”朋友圈分享不存在——微信把这一能力锁死了,只留给白名单 App。想绕开?做不到。能做的,只是让系统面板里有“微信朋友圈”这个选项,点进去之后的事,由微信自己控制。











