小程序webview中使用分享功能

小程序webview中使用分享功能_第1张图片
注意:因为为小程序原生组件,会铺满整个页面,所以不能通过按钮来触发分享,用户只能通过右上角的三个点来主动分享,关键是一般需求都是需要自定义其分享的参数的,包括分享卡片的标题、图片、页面路径,所以h5需要向小程序传递数据,h5内需两个操作:

1 引入微信官方js文件


2 向小程序发送数据

// 向小程序发送消息
let postData = {
     url: window.location.href,
     title: Response.username + ":" + Response.title,
     image: Response.image
   };
 wx.miniProgram.postMessage({ data: JSON.stringify(postData) });

因为参数较多,所以写在对象里,再转成字符串发过去

3 小程序接受数据
下面的都是在小程序操作的,首先根据文档来,给webview添加接收数据的属性


然后写上回调函数

//接收h5发送的数据
  getMessage(e){
    console.log(e)
    let that =this;
    let shareUrl = e.detail.data[e.detail.data.length-1];
    that.shareUrl = JSON.parse(shareUrl);
  },
  注意:每次发送数据后数据会添加到e.detail.data中的数组,并不会清除掉上一次传递的数据,所以我们取数组的最后一位元素,转成json

不要忽略的是,这个函数只会在特定的条件下才会触发,具体可以看文档,而我们的分享刚好满足这一条件,在用户点击右上角三个点中的转发后,我们就会拿到传过来的数据了
小程序webview中使用分享功能_第2张图片
4 分享参数赋值

onShareAppMessage: function (options) {
    let that =this;
    console.log(that.shareUrl)
    return {
      title: that.shareUrl.title,
      path: '/pages/index/index?url=' + encodeURIComponent(that.shareUrl.url),
      imageUrl: that.shareUrl.image
    }
  }
  这里把网址编码了下,用户分享的卡片进去的时候会在onload中得到webview的网址,解码后赋值给src属性就行了

因为如果只是分享当前页面的话,只需在onShareAppMessage中的options获取当前webview的url就行了,但是这里有个坑,ios并不能实时的获取到webview的url,所以此路不通(更新:后发现ios不能获取webview 的url是因为ios会忽略url#后面的字符串。所以ios实施获取url可以尝试去掉网址中的#)。

你可能感兴趣的:(小程序,分享,webview,vue,h5)