小程序全局设置分享好友和分享朋友圈功能

350 阅读1分钟

前置知识点

  1. Page: 宿主app提供的创建小程序页面的函数
  2. getCurrentPages: 获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面
  3. onReady: 小程序页面加载完毕, 可以进行页面UI交互.一个页面只会触发一次
  4. onShareAppMessage: 小程序分享朋友功能的api
  5. onShareTimeline: 小程序分享朋友圈功能的api

代码实现

const DEFAULT_SHARE_CONFIG = {
  title: '分享小程序的标题',
  path: '点击分享卡片进入小程序的路径',
  imageUrl: '分享卡片的图片链接',
  scImgUrl: '分享卡片的图片链接'
}

// 保存原有的Page引用
const _Page = Page

Page = (page) => {
  // 保留当前页面的onReady方法引用
  const originOnReady = page.onReady
  // 重写当前页面的onReady方法
  page.onReady = function () {
    // 调用原先页面中的onReady方法
    originOnReady?.apply(this)

    try {
      // 获取当前路由栈
      const pages = getCurrentPages()
      // 获取当前页面实例
      const currentPage = pages[pages.length - 1]

      // 判断当前页面是否写了onShareAppMessage方法, 且返回了值
      if (!(currentPage.onShareAppMessage?.())) {
        // 若没有写则重写当前页面的onShareAppMessage方法
        currentPage.onShareAppMessage = () => DEFAULT_SHARE_CONFIG
      }

      // 判断当前页面是否写了onShareTimeline方法, 且返回了值
      if (!(currentPage.onShareTimeline?.())) {
        // 若没有写则重写当前页面的onShareTimeline方法
        currentPage.onShareTimeline = () => DEFAULT_SHARE_CONFIG
      }
    } catch (error) {
      console.error(error)
    }
  }

 // 调用宿主提供的创建页面方法生成页面实例
  _Page(page)
}