mpShare 小程序分享

此功能,是对uni的onShareAppMessage 生命周期小程序分享 - 图1的封装。

这里说的小程序,指的是”微信小程序、百度小程序、头条小程序、QQ小程序,支付宝小程序等”。

由于小程序的分享(微信、头条平台),需要监听页面的onShareAppMessage生命周期,小程序需要在页面声明了此生命周期,点击右上角的”胶囊”才会有分享功能, 而一般情况下,我们希望每个页面都可以分享,那就需要每个页面都写一遍这个生命周期,是很繁琐的。

基于以上,uView通过mixin的形式,给每一个页面注入了onShareAppMessage生命周期,让您简单引入,无需任何后续操作,即可让每一个页面都有分享功能(仅针对小程序)。

平台差异说明

AppH5微信小程序支付宝小程序百度小程序头条小程序QQ小程序
xx

基本使用

需要注意的是,小程序(uni)没有提供类似”getNavigationBarTitle”这样的接口,所以我们无法获取当前页面导航栏的标题,换言之,我们想要每个页面个性化的 分享标题,需要手动设置,否则默认为小程序的名称

注意:

分享功能是默认关闭的,但是我们写好各项配置,您只要在main.js中引入对应的文件即可,我们没有默认引入,是因为某些用户并不需要此功能。

打开小程序分享功能:

  1. // main.js
  2. // 其他内容
  3. // 引入uView对小程序分享的mixin封装
  4. let mpShare = require('uview-ui/libs/mixin/mpShare.js');
  5. Vue.mixin(mpShare)
  6. // 其他内容

分享功能,一般有三个参数,如下:

  1. // 该对象已集成到this.$u中,内部属性如下
  2. this.$u.mpShare = {
  3. title: '', // 默认为小程序名称,可自定义
  4. path: '', // 默认为当前页面路径,一般无需修改,QQ小程序不支持
  5. // 分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径。
  6. // 支持PNG及JPG,默认为当前页面的截图
  7. imageUrl: ''
  8. }

以上这些,uView已通过mixin集成,当某一个页面您需要自定义分享信息时,可以通过”this.$u.mpShare”对进行修改,在页面的onLoad生命周期修改即可。

  1. export default {
  2. onLoad() {
  3. this.$u.mpShare.title = '天苍苍野茫茫,风水草地现牛羊';
  4. }
  5. }

重写”onShareAppMessage”生命周期

如果您基于自己的一些业务逻辑,需要更加自定义的实现逻辑,可以在页面中重新onShareAppMessage生命周期即可覆盖uView通过mixin监听的onShareAppMessage生命周期。

  1. export default {
  2. // 这里如果写成onShareAppMessage: res => { ... }形式的箭头函数,在内部会无法获得this
  3. onShareAppMessage(res) {
  4. if (res.from === 'button') {// 来自页面内分享按钮
  5. console.log(res.target)
  6. }
  7. return {
  8. title: '自定义分享标题',
  9. path: '/pages/test/test?id=123'
  10. }
  11. }
  12. }