分享
刀刀
12/30/2024
0 字
0 分钟
小程序拥有分享给好友和分享到朋友圈的功能,通过点击右上角选择功能实现。但是分享功能的实现需要开发者在对应页面设置 onShareAppMessage
和 onShareTimeline
事件,如果不设置,则无法正常使用分享功能。
分享给好友
分享给好友需要用到 onShareAppMessage
方法,可获取三个参数:
参数 | 类型 | 说明 | 最低版本 |
---|---|---|---|
from | String | 转发事件来源。 button :页面内转发按钮; menu :右上角转发菜单 | 1.2.4 |
target | Object | 如果 from 值是 button ,则 target 是触发这次转发事件的 button ,否则为 undefined | 1.2.4 |
webViewUrl | String | 页面中包含web-view组件时,返回当前web-view的url | 1.6.4 |
此事件处理函数需要 返回 一个 对象,用于自定义转发内容,返回内容如下:
字段 | 说明 | 默认值 | 最低版本 |
---|---|---|---|
title | 转发标题 | 当前小程序名称 | |
path | 转发路径 | 当前页面 path ,必须是以 / 开头的完整路径 | |
imageUrl | 自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径。支持PNG及JPG。显示图片长宽比是 5:4。 | 使用默认截图 | 1.5.0 |
promise | 如果该参数存在,则以 resolve 结果为准,如果三秒内不 resolve ,分享会使用上面传入的默认参数 | 2.12.0 |
示例代码
获取本地存储的用户信息数据对象中的邀请码。
js
onShareAppMessage() {
return {
title: '抓猫带货精选',
path: `/pages/tabbar/Index/Index?code=${uni.getStorageSync('userInfo').code}`,
}
},
分享朋友圈
分享朋友圈与分享给好友做法大同小异,需要使用到 onShareTimeline
事件方法,需要返回一个对象,包括自定义标题、携带的参数以及自定义图片路径。
字段 | 说明 | 默认值 | 最低版本 |
---|---|---|---|
title | 自定义标题,即朋友圈列表页上显示的标题 | 当前小程序名称 | |
query | 自定义页面路径中携带的参数,如 path?a=1&b=2 的 “?” 后面部分 | 当前页面路径携带的参数 | |
imageUrl | 自定义图片路径,可以是本地文件或者网络图片。支持 PNG 及 JPG,显示图片长宽比是 1:1。 | 默认使用小程序 Logo |
示例代码
js
onShareTimeline() {
return {
title: '抓猫带货精选',
query: `code=${uni.getStorageSync('userInfo').code}`,
}
},
注意事项
分享到朋友圈使用的是单页模式,即用户在朋友圈打开分享的小程序页面,并不会真正打开小程序,而是进入一个“小程序单页模式”的页面。打开的单页模式是不允许有交互的。
因此,分享朋友圈不支持自定义路径,query
参数只能传参数。
单页模式下的限制
小程序“单页模式”适用于纯内容展示场景,可实现的交互与接口能力有限,因此存在如下限制:
- 页面无登录态,与登录相关的接口,如
wx.login
均不可用;云开发资源需开启未登录访问方可在单页模式下使用,详见未登录模式。 - 不允许跳转到其它页面,包括任何跳小程序页面、跳其它小程序、跳微信原生页面
- 不允许横屏使用
- 若页面包含 tabBar,tabBar 不会渲染,包括自定义 tabBar
- 本地存储与小程序普通模式不共用
对于一些会产生交互的组件或接口,在点击后调用时,会弹 toast 提示“请前往小程序使用完整服务”。为达到良好的用户体验,请注意适配单页模式的接口能力,请勿大量使用被禁用的接口或组件。
禁用能力列表:
分类 | 功能点 |
---|---|
组件 | button open-type 、 camera 、 editor 、 form 、 functional-page-navigator 、 live-pusher 、 navigator 、 navigation-bar 、 official-account 、 open-data 、 web-view |
路由 | wx.redirectTo 、 wx.reLaunch 、 wx.navigateTo 、 wx.switchTab 、 wx.navigateBack |
界面 | 导航栏 、 Tab Bar |
网络 | mDNS 、 UDP 通信 |
数据缓存 | 周期性更新 |
媒体 | VoIP 、 wx.chooseMedia 、 wx.chooseImage 、 wx.saveImageToPhotosAlbum 、 wx.chooseVideo 、 wx.saveVideoToPhotosAlbum 、 wx.getVideoInfo 、 wx.compressVideo |
位置 | wx.openLocation 、 wx.chooseLocation 、 wx.startLocationUpdateBackground 、 wx.startLocationUpdate |
转发 | wx.getShareInfo 、 wx.showShareMenu 、 wx.hideShareMenu 、 wx.updateShareMenu |
文件 | wx.openDocument |
开放接口 | 登录 、 小程序跳转 、 用户信息 、 支付 、 授权 、 设置 、 收货地址 、 卡券 、 发票 、 生物认证 、 微信运动 、 微信红包 |
设备 | 蓝牙 、 iBeacon 、 Wi-Fi 、 NFC 、 联系人 、 剪贴板 、 电话 、 扫码 |
广告 | ad 、 wx.createRewardedVideoAd 、 wx.createInterstitialAd |
注意事项
- 低版本微信客户端打开时,会进入一个升级提示页面
- 不支持在小程序页面内直接发起分享
- 自定义分享内容时不支持自定义页面路径
- 存在
web-view
组件的页面不支持发起分享 - 支持打开开发版、体验版,无权限人员进入时页面会提示无权限