# mpShare 小程序分享
此功能,是对uni的onShareAppMessage 生命周期 (opens new window)的封装。
这里说的小程序,指的是"微信小程序、百度小程序、头条小程序、QQ小程序,支付宝小程序等"。
由于小程序的分享(微信、头条平台),需要监听页面的onShareAppMessage
生命周期,小程序需要在页面声明了此生命周期,点击右上角的"胶囊"才会有分享功能,
而一般情况下,我们希望每个页面都可以分享,那就需要每个页面都写一遍这个生命周期,是很繁琐的。
基于以上,uView通过mixin
的形式,给每一个页面注入了onShareAppMessage
生命周期,让您简单引入,无需任何后续操作,即可让每一个页面都有分享功能(仅针对小程序)。
# 平台差异说明
App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 头条小程序 | QQ小程序 |
---|---|---|---|---|---|---|
x | x | √ | √ | √ | √ | √ |
# 基本使用
需要注意的是,小程序(uni)没有提供类似"getNavigationBarTitle"这样的接口,所以我们无法获取当前页面导航栏的标题,换言之,我们想要每个页面个性化的 分享标题,需要手动设置,否则默认为小程序的名称。
注意:
分享功能是默认关闭的,但是我们写好各项配置,您只要在main.js
中引入对应的文件即可,我们没有默认引入,是因为某些用户并不需要此功能。
打开小程序分享功能:
// main.js
// 其他内容
import mpShare from './uni_modules/vk-uview-ui/libs/mixin/mpShare.js';
Vue.mixin(mpShare)
// 其他内容
完整的 main.js 参考
import App from './App'
// 引入 uView UI
import uView from './uni_modules/vk-uview-ui';
import mpShare from './uni_modules/vk-uview-ui/libs/mixin/mpShare.js';
// #ifdef VUE2
import Vue from 'vue'
// 使用 uView UI
Vue.use(uView);
Vue.mixin(mpShare)
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
...App
})
app.$mount()
// #endif
// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
const app = createSSRApp(App)
// 使用 uView UI
app.use(uView)
app.mixin(mpShare)
return {
app
}
}
// #endif
分享功能,一般有三个参数,如下:
// 该对象已集成到this.$u中,内部属性如下
this.$u.mpShare = {
title: '', // 默认为小程序名称,可自定义
path: '', // 默认为当前页面路径,一般无需修改,QQ小程序不支持
// 分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径。
// 支持PNG及JPG,默认为当前页面的截图
imageUrl: ''
}
以上这些,uView已通过mixin
集成,当某一个页面您需要自定义分享信息时,可以通过"this.$u.mpShare"对进行修改,在页面的onLoad
生命周期修改即可。
export default {
onLoad() {
this.$u.mpShare.title = '天苍苍野茫茫,风吹草低见牛羊';
}
}
# 重写"onShareAppMessage"生命周期
如果您基于自己的一些业务逻辑,需要更加自定义的实现逻辑,可以在页面中重写onShareAppMessage
生命周期即可覆盖uView通过mixin
监听的onShareAppMessage
生命周期。
export default {
// 这里如果写成onShareAppMessage: res => { ... }形式的箭头函数,在内部会无法获得this
onShareAppMessage(res) {
if (res.from === 'button') {// 来自页面内分享按钮
console.log(res.target)
}
return {
title: '自定义分享标题',
path: '/pages/test/test?id=123'
}
}
}
# 分享到朋友圈 1.7.2
此功能为微信小程序最新加入的功能,仅适用于微信小程序,uView也全局监听了此生命周期。
同理,你也可以在页面中重写onShareTimeline
生命周期即可覆盖uView通过mixin
监听的onShareTimeline
生命周期。
export default {
onShareTimeline(res) {
if (res.from === 'button') {// 来自页面内分享按钮
console.log(res.target)
}
return {
title: '自定义分享标题',
path: '/pages/test/test?id=123'
}
}
}
← 节点布局信息