小程序的转发按钮默认是关闭的,需要人为打开,为小程序更方便地传播,所以我需要给小程序加上这个功能。

我的目的只是方便传播小程序,需求跟其他小程序相比没那么复杂,分享后我只需固定进入小程序首页。

小程序在 Page 注册小程序页面时,有一个 onShareAppMessage 函数,这个函数需要 return 一个Object ,这个对象中是聊天界面显示的小程序卡片的一些信息,标题,默认图片,页面路径。

原生小程序使用就是这样:

Page({
  onShareAppMessage: function (res) {
    if (res.from === 'button') {
      // 来自页面内转发按钮
      console.log(res.target)
    }
    return {
      title: '自定义转发标题',
      path: '/page/user?id=123'
    }
  }
})

但是这个函数需要在每个页面都写一遍,就很麻烦。我用的是 uni-app,所以 mixins 又派上用场了:

// @/mixins/share.js

export default {
    onShareAppMessage(res) {
        return {
            path: 'pages/tabBar/tools/tools',
        }
    }
}

main.js 中:

import mixin from '@/mixins/share.js'

Vue.mixin(mixin)

这样,小程序中的所有页面都可以发起转发了,不过我转发的路径固定都是小程序首页,你也可以使用 getCurrentPages() 来获取当前页面栈,从而获取当前页面路径,这样就可以实现动态转发路径,转发当前页面。