跳转到内容

分享

刀刀

12/30/2024

0 字

0 分钟

小程序拥有分享给好友和分享到朋友圈的功能,通过点击右上角选择功能实现。但是分享功能的实现需要开发者在对应页面设置 onShareAppMessageonShareTimeline 事件,如果不设置,则无法正常使用分享功能。

分享给好友

分享给好友需要用到 onShareAppMessage 方法,可获取三个参数:

参数类型说明最低版本
fromString转发事件来源。 button:页面内转发按钮; menu:右上角转发菜单1.2.4
targetObject如果 from 值是 button,则 target 是触发这次转发事件的 button,否则为 undefined1.2.4
webViewUrlString页面中包含web-view组件时,返回当前web-view的url1.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 参数只能传参数。

单页模式下的限制

小程序“单页模式”适用于纯内容展示场景,可实现的交互与接口能力有限,因此存在如下限制:

  1. 页面无登录态,与登录相关的接口,如 wx.login 均不可用;云开发资源需开启未登录访问方可在单页模式下使用,详见未登录模式
  2. 不允许跳转到其它页面,包括任何跳小程序页面、跳其它小程序、跳微信原生页面
  3. 不允许横屏使用
  4. 若页面包含 tabBar,tabBar 不会渲染,包括自定义 tabBar
  5. 本地存储与小程序普通模式不共用

对于一些会产生交互的组件或接口,在点击后调用时,会弹 toast 提示“请前往小程序使用完整服务”。为达到良好的用户体验,请注意适配单页模式的接口能力,请勿大量使用被禁用的接口或组件。

禁用能力列表:

分类功能点
组件button open-typecameraeditorformfunctional-page-navigatorlive-pushernavigatornavigation-barofficial-accountopen-dataweb-view
路由wx.redirectTowx.reLaunchwx.navigateTowx.switchTabwx.navigateBack
界面导航栏Tab Bar
网络mDNSUDP 通信
数据缓存周期性更新
媒体VoIPwx.chooseMediawx.chooseImagewx.saveImageToPhotosAlbumwx.chooseVideowx.saveVideoToPhotosAlbumwx.getVideoInfowx.compressVideo
位置wx.openLocationwx.chooseLocationwx.startLocationUpdateBackgroundwx.startLocationUpdate
转发wx.getShareInfowx.showShareMenuwx.hideShareMenuwx.updateShareMenu
文件wx.openDocument
开放接口登录小程序跳转用户信息支付授权设置收货地址卡券发票生物认证微信运动微信红包
设备蓝牙iBeaconWi-FiNFC联系人剪贴板电话扫码
广告adwx.createRewardedVideoAdwx.createInterstitialAd

注意事项

  1. 低版本微信客户端打开时,会进入一个升级提示页面
  2. 不支持在小程序页面内直接发起分享
  3. 自定义分享内容时不支持自定义页面路径
  4. 存在 web-view 组件的页面不支持发起分享
  5. 支持打开开发版、体验版,无权限人员进入时页面会提示无权限