页面分享是有前提的,基于 wx.showShareMenu 这个接口下的设置下。当前页面才会显示分享的按钮,其实当前我是这么想的,直接让我写分享的回调不就得了何必要我先显示按钮再写回调呢有点小难受,可能是这么应用上的场景我还没有遇到。小步骤如下“
在 onLoad 调用 wx.showShareMenu 进行设置如下所示
wx.showShareMenu({
withShareTicket: true
success: function(r) {
console.log(r)
}
})
withShareTicket是可填的,我也就是在这里给自己坑了一下,根据文档所描述,设置为 true
配合 相应的接口可以提取用户的来源,相当不错接下来是写回调函数。常规操作
重写回调函数 onShareAppMessage 这个函数主要是返回一个 固定的格式包主要有三个元素
title
path
imageUrl
onShareAppMessage: function (res) {
//定义分享
if (res.from === 'button') {
// 来自页面内转发按钮
console.log(res.target)
}
return {
title: '不在书店',
path: '/pages/index/index?pid=' + app.ut.ml_get_openid(),
success: function(r) {
console.log('return share')
console.log(r)
},
fail: function(a) {
console.log(a)
}
}
}
经过上页面设置后,就可以进行分享了。用户所点开的页面是 path
的路径,一般来说我们在 path
加上很多参数,以便后面的做更多的场景应用。那么关于 withShareTicket 的设置后有什么用呢,官方的说法是,获取小程序二次打开的会返回 shareTicket 。通过可以获取一些信息,比如微信请信息,不过要配置 函数 getShareInfo 。shareTicket 的抓取在哪里呢,官方说是在 onShow 里就有。我一开始没明白就认为是 当前应用下的 onShow 里,这就我自己坑自己的地方了,文档里说的明白 在 App.onShow里提取出来的,在这里我曾有过跳楼的心情。在开发工具是有相应的提示是能成功那怕(我用的方法是不太对的)但在真机上是得不到应有的设想结果。有点小烦.....
App.onShow() 函数提取 shareTicket
onShow(options) {
console.log(options)
}
打印结果发下
{
"path":"pages/index/index",
"reLaunch":1,
"scene":1044,
"query":{
"openid":"o--2V5EZHbsgHKAitK0qM1yLeDtI"
},
"shareTicket":"ebed372a-1989-4106-91fc-78ef48e35428"
}
shareTicket 并不是什么情况都会有,目前好像只会分享到群上才会有那么现在就可以通过 getShareInfo 来提取微信为我们提供的所谓的一些信息了
onShow: function (options) {
console.log('App Show')
console.log(options)
if(options.shareTicket!=undefined) {
wx.getShareInfo({
shareTicket: options.shareTicket,
success: function(r) {
console.log(r)
}
})
}
},
返回的数据结构如下:
{
"errMsg":"getShareInfo:ok",
"iv":"JIZPeDlnALGmC+KStNv9zg==",
"encryptedData":"evAzE+ehXGqSMI16k0GXpbf3HVK1WgkPyg1Ei2I1ZTZRAYbDlfw2rFDEBZYGuMPuLxbEW9XxtjH2QGpKHPKR+55EVqlObFDiRzcZC3zX4iwH5sCccnDt0AvfmHMhvZGns8r8bbVrmHLe6ouaaEQcpg=="
}
哎呀!居然是加密的,那算了,有点小烦,不过好像这是后端才能解密的这就不是我的事情了,至于解密后的数据是怎样的,如下所示
{
"openGId":"G--5V2ClXR7VkzxYxg3XjXPfEvxI",
"watermark":{
"timestamp":1536397785,
"appid":"xxxxxxxxxxxx"
}
}
这一看怎么觉得还是个加密的数据,好吧,接口是别人写的,只好先这样谁叫我们是普通用户呢
网友评论