单个页面分享
1. 直接可以分享到好友和朋友圈
onLoad((options) => {
uni.showShareMenu({
withShareTicket: true, // 是否使用带 shareTicket 的转发
menus: ['shareAppMessage', 'shareTimeline'], // 需要显示的菜单列表,例如分享到朋友圈等
});
});
这里面使用到了showShareMenu方法,里面配置了menus,当我们在查Uni.app官方文档的时候发现文档中并没有这个配置项。
而[微信官方文档](转发 / wx.showShareMenu (qq.com))中有,所以加上也是会生效的。
这样配置完后就可以分享给好友和朋友圈了
- 自定义分享界面(携带参数)
如果你这个页面需要自定义标题封面等,就需要自定义,这里需要使用到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('分享失败');
},
};
});
这样分享后就可以实现自定义了
小程序中每一个页面都允许被分享
如果你想在每一个页面中都允许被分享,我们可以在main.js文件中引入自己写好的代码
- 首先在utils文件夹中新建一个share.js文件(名字随便)
export default {
onLoad() {
uni.showShareMenu({
withShareTicket: true, // 是否使用带 shareTicket 的转发
menus: ['shareAppMessage', 'shareTimeline'], // 需要显示的菜单列表,例如分享到朋友圈等
});
},
};
- 在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,
};
}