微信小程序 转发
转发
获取更多转发信息
通常开发者希望转发出去的小程序被二次打开的时候能够获取到一些信息,例如群的标识。现在通过调用 wx.showShareMenu 并且设置 withShareTicket 为 true ,当用户将小程序转发到任一群聊之后,此转发卡片在群聊中被其他用户打开时,可以在 App.onLaunch 或 App.onShow 获取到一个 shareTicket。通过调用 wx.getShareInfo 接口传入此 shareTicket 可以获取到转发信息。
页面内发起转发
基础库 1.2.0 开始支持,低版本需做兼容处理。
通过给 button 组件设置属性 open-type="share",可以在用户点击按钮后触发 Page.onShareAppMessage 事件,相关组件:button。
使用指引
转发按钮,旨在帮助用户更流畅地与好友分享内容和服务。转发,应是用户自发的行为,且在需要时触手可及。开发者在使用时若遵从以下指引,会得到更佳的用户体验。
- 含义清晰:明确、一目了然的图形按钮,将为用户减少理解的时间。在我们的资源下载中心,你可以找到这样的按钮素材并直接使用。或者你可以根据自己业务的设计风格,灵活设计含义清晰的按钮的样式。当然,你也可以直接使用带文案的按钮,“转发给好友”,它也足够明确。
- 方便点击:按钮点击热区不宜过小,亦不宜过大。同时,转发按钮与其他按钮一样,热区也不宜过密,以免用户误操作。
- 按需出现:并非所有页面都适合放置转发按钮,涉及用户隐私的非公开内容,或可能打断用户完成当前操作体验的场景,该功能并不推荐使用。同时,由于转发过程中,我们将截取用户屏幕图像作为配图,因此,需要注意帮助用户屏蔽个人信息。
- 尊重意愿:理所当然,并非所有的用户,都喜欢与朋友分享你的小程序。因此,它不应该成为一个诱导或强制行为,如转发后才能解锁某项功能等。请注意,这类做法不仅不被推荐,还可能违反我们的《运营规范》,我们强烈建议你在使用前阅读这部分内容。
以上,我们陈列了最重要的几点,如果你有时间,可以完整浏览《设计指南》,相信会有更多的收获。
提示:
- 不自定义转发图片的情况下,默认会取当前页面,从顶部开始,高度为 80% 屏幕宽度的图像作为转发图片。
- 转发的调试支持请查看 普通转发的调试支持 和 带 shareTicket 的转发
- 只有转发到群聊中打开才可以获取到 shareTickets 返回值,单聊没有 shareTickets
- shareTicket 仅在当前小程序生命周期内有效
- 由于策略变动,小程序群相关能力进行调整,开发者可先使用 wx.getShareInfo 接口中的群 ID 进行功能开发。
- 微信7.0.12开始,支持群主转发小程序时同时把消息设为该群的群待办消息,群待办消息会以气泡形式出现在聊天窗口底部。默认每次转发一个群待办消息,都会生成一个待办消息气泡。通过 wx.updateShareMenu 接口修改toDoActivityId属性可以把多个待办消息聚合为同一个,即转发相同toDoActivityId的群待办消息,只会出现一个待办消息气泡。toDoActivityId需要在转发前通过 updatableMessage.createActivityId 接口创建。
动态消息
从基础库 2.4.0 开始,支持转发动态消息。动态消息对比普通消息,有以下特点:
- 消息发出去之后,开发者可以通过后台接口修改部分消息内容。
- 消息有对应的提醒按钮,用户点击提醒按钮可以订阅提醒,开发者可以通过后台修改消息状态并推送一次提醒消息给订阅了提醒的用户
消息属性
动态消息有状态、文字内容、文字颜色。
状态
消息有两个状态,分别有其对应的文字内容和颜色。其中状态 0 可以转移到状态 0 和 1,状态 1 无法再转移。
状态 | 文字内容 | 颜色 | 允许转移的状态 |
---|---|---|---|
0 | "成员正在加入,当前 {member_count}/{room_limit} 人" | #FA9D39 | 0, 1 |
1 | "已开始" | #CCCCCC | 无 |
状态参数
每个状态转移的时候可以携带参数,具体参数说明如下。
参数 | 类型 | 说明 |
---|---|---|
member_count | string | 状态 0 时有效,文字内容模板中 member_count 的值 |
room_limit | string | 状态 0 时有效,文字内容模板中 room_limit 的值 |
path | string | 状态 1 时有效,点击「进入」启动小程序时使用的路径。对于小游戏,没有页面的概念,可以用于传递查询字符串(query),如 "?foo=bar"
|
version_type | string | 状态 1 时有效,点击「进入」启动小程序时使用的版本。有效参数值为:develop (开发版),trial (体验版),release (正式版) |
使用方法
一、创建 activity_id
每条动态消息可以理解为一个活动,活动发起前需要通过 updatableMessage.createActivityId 接口创建 activity_id。后续转发动态消息以及更新动态消息都需要传入这个 activity_id。
活动的默认有效期是 24 小时。活动结束后,消息内容会变成统一的样式:
- 文字内容:“已结束”
- 文字颜色:#00ff00
二、在转发之前声明消息类型为动态消息
通过调用 wx.updateShareMenu 接口,传入 isUpdatableMessage: true,以及 templateInfo、activityId 参数。其中 activityId 从步骤一中获得。
wx.updateShareMenu({
withShareTicket: true,
isUpdatableMessage: true,
activityId: '', // 活动 ID
templateInfo: {
parameterList: [{
name: 'member_count',
value: '1'
}, {
name: 'room_limit',
value: '3'
}]
}
})
三、修改动态消息内容
动态消息发出去之后,可以通过 updatableMessage.setUpdatableMsg 修改消息内容。
低版本兼容
对于不支持动态消息的客户端版本,收到动态消息后会展示成普通消息