QQ小程序页面分享时,如何正确设置分享内容和路径?

诸葛向景 阅读 301

在开发QQ小程序时遇到了分享功能问题,按照文档写了wx.updateShareMenu,但分享卡片显示的还是默认标题和路径,路径参数也没带进去。

场景是点击按钮触发分享,代码写了:


onShareClick() {
  wx.updateShareMenu({
    withShareTicket: true,
    success() {
      console.log('更新成功')
    }
  })
}

发现分享卡片标题还是页面配置的默认值,路径一直是”/pages/index/index”,没有带上当前页面的查询参数。试过在app.json里配置defaultShare,但QQ小程序好像不支持这个字段…

我来解答 赞 5 收藏
二维码
手机扫码查看
2 条解答
上官海淇
问题应该出在没正确实现 onShareAppMessage 这个生命周期函数上,QQ小程序的分享内容完全依赖它返回的数据,wx.updateShareMenu 只是配置分享菜单的样式(比如是否带 withShareTicket),不会自动带路径参数或改标题。

你得在页面里加上 onShareAppMessage,比如这样:

Page({
onShareAppMessage() {
// 这里必须返回对象,包含 title、path、imageUrl 等
return {
title: '自定义分享标题',
path: '/pages/detail/detail?id=123&from=share', // 路径要带参数,且必须是当前页面的路径
imageUrl: 'https://xxx.com/share.png' // 可选,自定义缩略图
}
},

onShareClick() {
wx.updateShareMenu({
withShareTicket: true,
success() {
console.log('更新成功')
}
})
}
})


注意几个坑:

- path 必须是真实存在的小程序页面路径,不能是相对路径,也不能写错大小写
- 要带上参数的话,直接拼在 path 字符串里就行,比如 ?id=xxx,但注意 URL 编码
- 如果你希望每次分享都动态生成路径(比如当前页的某个状态),可以在 onShareAppMessage 里读 this.datathis.data.id 拼进去
- defaultShare 这个字段确实不支持,QQ小程序不走这个配置,必须代码里返回

另外确认下:分享按钮得是官方的 <button open-type="share">,或者你手动触发 onShareAppMessage 的时机对不对——不过你代码里是点按钮触发 wx.updateShareMenu,这没问题,但别忘了页面一加载就写好 onShareAppMessage,它只在用户点击右上角菜单或调用 button share 时才执行。

最后,QQ开发者工具里有时候缓存比较狠,改完代码记得重启模拟器再试,别光热更新。
点赞 5
2026-02-24 22:11
W″永臣
懒人方案来了,QQ小程序分享得用 onShareAppMessage 方法来设置内容和路径,直接在页面里加这个方法就行。

Page({
onShareAppMessage() {
return {
title: '自定义分享标题',
path: '/pages/index/index?query=123'
}
},
onShareClick() {
wx.updateShareMenu({
withShareTicket: true,
success() {
console.log('更新成功')
}
})
}
})


updateShareMenu 只是更新分享设置,具体内容还是得靠 onShareAppMessage 来定。懒得折腾的话,直接把需要的参数拼到 path 里完事。
点赞 3
2026-02-16 18:00