最近在调研小程序的分享能力,本篇文档主要是调研小程序关于分享方面的玩法,目的是学习小程序在项目应用以及玩法链上的扩展。
API层面 onShareAppMessage小程序如果想对外分享,必须在 page 里面定义 onShareAppMessage 函数,来配置页面分享转发相关的信息。
只有定义了此事件处理函数,右上角菜单才会显示 “转发” 按钮
用户点击转发按钮的时候会调用
此事件需要 return 一个 Object,用于自定义转发内容
一个页面可能会有多个分享,可以由插入的参数options来判断具体是由哪个位置进行分享,从而做不同的逻辑判断。
return对象的返回函数:
如果定义了该事件,又不想通过页面menu转发,可以通过 hideShareMenu来隐藏掉
注意事项:
转发后不添加imageUrl的话,将截图作为转发的默认图片。
from 字段可以通过在转发成功后调取的 success、complete 来进行对 menu 和 button 的不同操作
如果有携带 shareTicket 值,会在 success 回调产生,返回结果在 shareTickets 字段中,是一个数组,可以做一定处理
wx.showShareMenu一般是用来配置相关的参数,常见的如 withShareTicket ,用它来获取群信息,群的相关标示。
wx.showShareMenu({ withShareTicket: true }) 复制代码 wx.hideShareMenu隐藏menu级别的转发功能,但是button中还存在着转发。
如果先设置 showShareMenu ,并且配置了 withShareTicket,再用 hideShareMenu 方法,通过按钮转发,照样能获取 shareTicket,如下:
wx.showShareMenu({ withShareTicket: true }) wx.hideShareMenu({ }) 复制代码 wx.updateShareMenu更新shareMenu信息需要用update操作哦,这里需要注意下,一般都是会更新 withShareTicket 属性。
wx.getShareInfo在拿到了shareTicket信息后,可以由此API获取转发详细信息
wx.getShareInfo({ shareTicket: res.shareTickets[0], success: ... fail: ... }) 复制代码相关回调的参数
{ errMsg: "getShareInfo:ok", iv: "gRHeFU+Nhr36RmladCXnRQ==", encryptedData: "IQ/RwZLeQFUGuxv0bBfOrL/KLnXO+bxcyCBru5lB92FkHIg8ae…7TnHwU+rqgerFKvpvS5JbFyh+9liUqyb2bk6/LETYQ+h/FQ==" } 复制代码由iv和encryptedData进行解密,可以拿到openGId的值。为当前群对当前小程序的唯一值。额外还可以拿到群名称等更多的开放数据。
button转发页面内需要转发时,需要给 button 组件设置 open-type="share" ,并在触发的地方判断来源。
获取分享链接流程在小程序中,获取openGId主要有两种途径,也一般围绕着两种途径做分享相关的开发:
当用户打开 withShareTicket 的卡片时,可以在onLauch或者 getShareInfo 中获取加密信息,并且传给服务端获得openGId。
当用户分享成功后,会在回调里收到一个 shareTicket ,然后通过 getShareInfo 来获得加密信息,获得openGId。
拓展玩法 APP分享到小程序传统APP要以小程序卡片的形式分享到微信,需要满足以下几个条件:
要求发起分享的App与小程序属于同一微信开放平台帐号;
支持分享小程序类型消息至好友会话,不支持“分享至朋友圈” “收藏”;
微信客户端版本要求:6.5.6及以上微信客户端版本,若客户端版本低于6.5.6,小程序类型分享将自动转成网页类型分享。开发者必须填写网页链接字段,确保低版本客户端能正常打开网页链接;
支持分享大图卡片样式,自定义图片建议长宽比是 5:4。6.5.9及以上版本微信客户端小程序类型分享使用大图卡片样式。
支持分享开发版/体验版小程序,为支持开发者调试,开发者工具包支持分享开发版/体验版小程序至微信,开发者可控制分享的小程序版本。
具体流程图如下:
朋友圈打开小程序在朋友圈中,发布图片附带小程序二维码,用户把图片分享到朋友圈中,看到的一方即可长恩识别在微信中打开小程序。 通过这个玩法,实现了把小程序「分享」到朋友圈。
至于图片的生成,canvas和服务器端生成都是比较成熟的解决方案。
小程序支持打开APP这个玩法有一个前提:小程序卡片必须是由APP分享出去,才可以打开APP
功能流程图如下:
该途径可以作为小程序对于app的补充: 产品可以通过 App 和小程序实现场景互补。