uni-app开发微信小程序分享,传参

1,856 阅读2分钟

单个页面分享

1. 直接可以分享到好友和朋友圈

onLoad((options) => {
  uni.showShareMenu({
    withShareTicket: true, // 是否使用带 shareTicket 的转发
    menus: ['shareAppMessage', 'shareTimeline'], // 需要显示的菜单列表,例如分享到朋友圈等
  });
});

这里面使用到了showShareMenu方法,里面配置了menus,当我们在查Uni.app官方文档的时候发现文档中并没有这个配置项。

image.png

而[微信官方文档](转发 / wx.showShareMenu (qq.com))中有,所以加上也是会生效的。

image.png 这样配置完后就可以分享给好友和朋友圈了

image.png

  1. 自定义分享界面(携带参数)

如果你这个页面需要自定义标题封面等,就需要自定义,这里需要使用到onShareAppMessage钩子函数

注意:onShareAppMessage钩子函数在vue3的写法中需要引入

import { onShareAppMessage } from '@dcloudio/uni-app';

// 允许页面被分享
onShareAppMessage(() => {
  return {
    title: '自定义标题',
    imageUrl: ../static/home.png, // 自定义封面图片
    path: `/pages/Tenant/roomDetail?resourceId=${resourceId.value}`, // 跳转传参
    success: function () {
      console.log('分享成功');
    },
    fail: function () {
      console.log('分享失败');
    },
  };
});

这样分享后就可以实现自定义了

image.png

小程序中每一个页面都允许被分享

如果你想在每一个页面中都允许被分享,我们可以在main.js文件中引入自己写好的代码

  1. 首先在utils文件夹中新建一个share.js文件(名字随便)
export default {
  onLoad() {
    uni.showShareMenu({
      withShareTicket: true, // 是否使用带 shareTicket 的转发
      menus: ['shareAppMessage', 'shareTimeline'], // 需要显示的菜单列表,例如分享到朋友圈等
    });
  },
};
  1. 在main.js文件中引入并使用

#ifdef MP-WEIXIN 和 #endif这个是条件编译,如果你只开发微信小程序,那么就可以忽略这个

import { createSSRApp } from 'vue';
import uviewPlus from 'uview-plus';
import pinia from './stores/index';
import App from './App.vue';

// #ifdef MP-WEIXIN
import shareMixin from './utils/share';
// #endif

export function createApp() {
  const app = createSSRApp(App);
  app.use(uviewPlus);
  app.use(pinia);

  // #ifdef MP-WEIXIN
  app.mixin(shareMixin);
  // #endif

  return {
    app,
  };
}