1、Page.onShareAppMessage({})
设置右上角“转发”配置,及转发后回调函数返回 shareTicket 票据
2、wx.showSahreMenu()
用户点击右上角后,显示“转发”按钮
3、wx.hideShareMenu()
隐藏转发按钮,无视 Page.onShareAppMessage({})
4、wx.getShareInfo({})
根据 shareTicket 获取已加密的群信息
把转发流程切分:转发前配置->转发时->转发到群组后打开->二次转发
转发流程图:
这里写图片描述
U1: 用户
T1,T2,T3:表示转发票据,即 shareTicket
G1,G2,G3:群组
1.转发前配置
在页面 onLoad 方法添加
withShareTicket 为 true 时,表示允许转发时是否携带 shareTicket。
shareTicket 是获取转发目标群信息的票据,只有拥有 shareTicket 才能拿到群信息,用户每次转发都会生成对应唯一的shareTicket 。
shareTicket 有两个用途:
用户主动转发后,获取转发到目标群群信息,对应上图UI。
用户在群组中打开小程序,获取群组信息,对应上图 G1 群组中的用户。
2.转发时获取群信息
当某个小程序被转发到群组后,开发者想获取到转发目标群组信息,将用户和群组做某种绑定关系(openId + openGid)。
shareTickets 是一个数组,每一项是一个 shareTicket ,对应一个转发对象,转发给用户不会包含shareTicket。
拿到 shareTicket 之后,使用 wx.getShareInfo({}) 方法传入 shareTicket 参数,wx.getShareInfo({}) 里回调函数中包含 已加密的群信息和 向量IV。
3.转发到群组后打开
用户将小程序转发到微信群组后,群成员打开小程序,通过 shareTicket,开发者就能将群成员和群组绑定起来(openId + openGid),基于群组关系,小程序有更多的应用场景,例如:王者荣耀群排行,摩拜单车。
在群组中打开小程序,页面onLoad 或 onShow 方法包含 scene 和 shareTicket,需要判断 scene 是否为1044,如果不是则不包含 opt 中 shareTicket 参数。
4.二次转发
二次转发重复前3个步骤,没什么可说的,但是有一个方向值得探讨,可否把小程序转发路径比作转发链,进而生成转发树,用数据结构方法(树、马尔科夫链)处理发现群组与群组,群组与成员之间微妙关系。
如开头那张图,我们很容易看出转发链和转发树。
转发链:U1 >G1 >G2
转发树:U1 >G1 >G2 &G3
onShareAppMessage(Object object)
官网是这样说的
(一)在我们自己的项目内,对应的js文件中这样写,一般在生成小程序文件的时候默认会显示这样的语句:
那么,在我们小程序界面右上角菜单就会显示“转发”按钮:
(二)除了默认的方法外,我们还可以自定义转发的标题与内容,此事件处理函数需要 return 一个 Object,用于自定义转发内容:
实现:
(三)一般为了引导用户的转发,我们还会在界面上设置转发按钮,比如“分享给好友”
(按钮样式还是需要自己调整的)
这时候d出的内容则跟我们右上角菜单的“转发”行为一致。
官方Tips
1.不自定义转发图片的情况下,默认会取当前页面,从顶部开始,高度为 80% 屏幕宽度的图像作为转发图片。
2.转发的调试支持请查看 普通转发的调试支持 和 带 shareTicket 的转发
3.只有转发到群聊中打开才可以获取到 shareTickets 返回值,单聊没有 shareTickets
4. shareTicket 仅在当前小程序生命周期内有效
5.由于策略变动,小程序群相关能力进行调整,开发者可先使用 wx.getShareInfo 接口中的群 ID 进行功能开发。
6.微信7.0.12开始,支持群主转发小程序时同时把消息设为该群的群待办消息,群待办消息会以气泡形式出现在聊天窗口底部。默认每次转发一个群待办消息,都会生成一个待办消息气泡。通过 wx.updateShareMenu 接口修改 toDoActivityId 属性可以把多个待办消息聚合为同一个,即转发相同 toDoActivityId 的群待办消息,只会出现一个待办消息气泡。 toDoActivityId 需要在转发前通过 updatableMessage.createActivityId 接口创建。
(四)另外关于转发,官方还提供了其他几个API方法:
1)wx.updateShareMenu(Object object):更新转发属性
2)wx.showShareMenu(Object object):显示当前页面的转发按钮
3)wx.hideShareMenu(Object object):隐藏转发按钮
4)wx.getShareInfo(Object object):获取转发详细信息
最后这一个还没有理清楚,目前测试报错,后期理清了再来更新。
使用ShareSDK分享小程序的时候,分享出去的小程序无法长按转发,各种查看文档,并且问了一下客服,没有解决办法。还以为真的是微信屏蔽了这个功能,后来别人提醒说可能是由于 withShareTicket 这个配置到的。
之前看文档确实有这么个东西,开发小程序的时候也知道有这么个玩意,不过这个为啥能影响到无法长按转发呢。。。
但是据说微信这个东西居然是一个功能。。。
withShareTicket 为 true 的时候会把分享出去的小程序固定在一个群聊中,无法转发。
withShareTicket 为 false 的时候就可以分享出去了。。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)