真分享必须用onshareappmessage和onsharetimeline,仅mp-weixin平台生效;需同步返回对象,path须encodeuricomponent且为已注册非tabbar页面;朋友圈分享需基础库≥2.24.4、后台开通权限、https正方图。

uni-app 微信小程序分享必须用 onShareAppMessage 和 onShareTimeline
微信小程序原生只认这两个生命周期钩子,uni-app 里不能靠 uni.share 或 H5 的 Web Share API 实现真分享——那只是模拟弹窗或跳转,实际不会触发微信的分享链路。真分享必须走小程序原生通道。
注意:这两个钩子只在微信小程序平台生效(mp-weixin),其他平台如支付宝、字节会忽略或报错,所以务必加平台判断。
-
onShareAppMessage对应“分享给好友”,返回对象决定标题、路径、图片(imageUrl必须是 HTTPS 且尺寸建议 120×120 以上) -
onShareTimeline对应“分享到朋友圈”,微信要求页面需开启「朋友圈分享」权限(后台配置 + 小程序基础库 ≥ 2.24.4) - 两个函数都必须 同步返回对象,不能
async/await或 Promise,否则分享按钮变灰或无响应
分享参数里 path 带参数要 encode,否则中文或特殊字符会截断
比如想分享带用户 ID 的页面:/pages/detail/detail?id=123&name=张三,直接拼会导致 & 被解析为 URL 分隔符,name=张三 丢失。
正确做法是用 encodeURIComponent 包裹每个值,再拼接:
onShareAppMessage() {
const id = '123'
const name = '张三'
return {
title: '来看这个',
path: `/pages/detail/detail?id=${encodeURIComponent(id)}&name=${encodeURIComponent(name)}`
}
}
另外,path 必须是已注册的页面路径(见 pages.json),不能是 tabbar 页面(如 /pages/index/index),否则分享后点击会白屏。
由于微信的大热,为了更好的方便使用微信的用户查询一些信息,这篇文章是入门级的微信公众平台开发教程,需要的朋友可以参考下 这篇入门教程将引导你完成如下任务: 创建百度云平台应用启用微信公众平台开发模式获取订阅、文字、图片、语音、视频消息回复文本、图文及音乐消息程序开发
朋友圈分享失败常见原因:基础库版本、后台未开通、图片不合规
调用 onShareTimeline 后没反应?先看这三点:
- 真机调试时检查微信版本和基础库:打开「发现 → 小程序 → 右上角 → 设置 → 关于小程序」,确认基础库 ≥ 2.24.4;开发者工具需设为“最新版”并重启
- 登录 微信公众平台 → 开发管理 → 开发者工具 → 小程序管理后台 → 功能管理 → 开启「朋友圈分享」开关(不是默认开的)
-
imageUrl必须是 HTTPS、宽高比 1:1(推荐 500×500)、大小 ≤ 5MB;本地临时路径(uni.getFileSystemManager().readFile生成的)或base64图片均不支持
分享回调拿不到转发结果,别试图监听 success/fail
微信小程序不提供分享成功或失败的回调(onShareAppMessage 和 onShareTimeline 返回后即结束),所谓“分享后统计”只能靠服务端埋点:在目标页面(path 指向的页面)的 onLoad 中检查 options 是否含 share_id、scene 等字段,再上报行为。
例如:/pages/detail/detail?share_id=abc123&scene=1089,其中 scene=1089 表示来自朋友圈,1007 表示来自好友。
别在分享函数里写 console.log('分享成功') —— 它永远执行不到,因为微信根本不等你 log。










