在项目中有需要后端使用推送的地方,我们选择的方案是使用uni的unipush
首先需要去创建云服务空间
unicloud地址
https://unicloud.dcloud.net.cn/
去manifest。json勾选push消息推送

去dcloud后台添加应用的unipush2.0

然后去项目选择绑定云服务空间,没有就右键项目目录去创建uniCloud服务
然后去右键点击cloudfunctions里面创建云函数

右键你创建的云函数去设置公共模块

客户端使用方法我这方法是后端用的我用获取手机号举例
javascript
uniCloud.callFunction({
name: "simLogingFunction", // 填写你自己的云函数名称
//传入上面获取的openid和access_token获取手机号
data: {
access_token: simAuth.value.access_token, // 客户端一键登录接口返回的access_token
openid: simAuth.value.openid // 客户端一键登录接口返回的openid
}
})
.then((dataRes) => {
//此处已经成功获取手机号等信息
console.log("云函数返回的参数", dataRes)
simAuthPhone.value = dataRes.result.data.phoneNumber;
goSmiLoginApi();
// 获取手机号后根据自己的需求做后面的登录操作即可
//...
})
.catch((err) => {
console.log(err);
console.log("云函数报错", err)
uni.showToast({
title: err.errMsg,
icon: "none"
})
})
后端使用需要右键云函数去上传部署

然后在unicloud后台的服务空间中就能去看到云函数

点进去云函数url化路径/你输入的名称就是后端要访问的传参方式用post

设置通知栏消息用户点击跳转指定路径后端发送的时候加payload里面的path

在app.vue中去添加监听推送消息跳转指定路径
javascript
onShow: function() {
console.log('App Show');
// #ifdef APP-PLUS
uni.onPushMessage(res => {
console.log("res当前接收的推送参数", res)
let data = res.data
if (data.payload?.path) {
uni.navigateTo({
url: data.payload.path + (data.payload.query ? '?' + data.payload.query : '')
})
}
})
// #endif
},