在移动应用中,推送通知是提升用户活跃度与留存率的关键能力。无论是新消息提醒、活动通知还是系统公告,它都能让你的应用持续为用户提供服务。
UniApp 支持的推送方案对比
| 推送类型 |
支持端 |
特点 |
推荐指数 |
| UniPush 2.0 |
App |
官方推荐、稳定、功能全 |
⭐⭐⭐⭐⭐ |
| UniCloud 云函数消息 |
App + 小程序 |
可在服务端后台主动触发 |
⭐⭐⭐⭐⭐ |
| 微信小程序订阅消息 |
微信小程序 |
限制较多,需用户订阅 |
⭐⭐⭐ |
| 支付宝小程序消息 |
支付宝小程序 |
限制更多 |
⭐⭐ |
| H5 Web Push |
H5(支持环境) |
需 HTTPS 支持 |
⭐⭐⭐ |
UniPush 2.0 作为官方方案,配置相对简单,开发者只需在 UniApp 开发者后台根据指引完成相关厂商密钥的申请与配置即可使用。

App 推送全流程实现
1. 获取客户端设备标识
推送的第一步是获取设备的唯一标识(CID),并将其与您的用户系统进行绑定。
uni.getPushClientId({
success: (res) => {
// 设备唯一标识 CID
console.log('ClientID:', res.cid);
// 将此 cid 与当前登录用户进行关联,存储至您的服务器或[数据库](https://yunpan.plus/f/23-1)
},
fail(err) {
console.log('获取ClientID失败:', err)
}
})
2. 监听并处理推送消息
在应用启动时(如 App.vue 的 onLaunch 生命周期中),监听推送消息的到达和点击事件。
onLaunch() {
// 监听推送消息
uni.onPushMessage((res) => {
console.log('收到推送消息:', res);
// 判断消息类型,例如用户点击了通知
if (res.type === 'click') {
// 解析自定义数据 payload,并跳转到对应页面
uni.navigateTo({ url: '/pages/message/detail?id=' + res.data.id });
}
});
}
使用云函数主动触发推送
通过云函数,您可以在服务端任意业务逻辑中主动向指定设备发送推送,这为后端主动通知提供了强大支持。这通常构建在Node.js环境中。
常规推送云函数示例
以下是一个完整的云函数示例,用于接收参数并向指定设备发送推送。
'use strict';
/**
* 推送消息云函数
* @param {Object} event - 参数对象
* @param {String} event.token - 目标设备的 push_token
* @param {String} event.title - 推送标题
* @param {String} event.content - 推送内容
* @param {Object} event.payload - 自定义数据,供客户端点击时使用
* @param {Object} context - 上下文
*/
exports.main = async (event, context) => {
// 获取推送管理器实例
const push = uniCloud.getPushManager({ appId: "__UNI__xxxxxxx" }); // 替换为你的 AppID
const { token, title, content, payload } = event;
// 调用 UniPush 发送接口
const res = await push.sendMessage({
"push_token": token,
"title": title,
"content": content,
"payload": payload || {}, // 自定义数据
"force_notification": true // 确保以通知形式显示
});
// 返回推送结果
return res;
};
平台特定配置(以小米为例)
对于某些安卓厂商通道(如小米),可能需要进行额外配置以确保离线推送等功能正常。
const pushManager = uniCloud.getPushManager({ "appId": "__UNI__DEMO123" });
return await pushManager.sendMessage({
title: "消息标题",
content: "消息内容",
options: {
android: {
"XM": { // 小米通道特定配置
"/extra.sound_uri": "小米后台申请的自定义 sound_url 地址",
"/extra.channel_id": "小米后台申请的通知类别id",
"/extra.app_version": "v3.3.0" // 可选:按应用版本筛选
}
}
}
});
至此,您已经掌握了在 UniApp 中使用 UniPush 2.0 实现从客户端监听、设备注册到服务端(云函数)主动触发推送的核心流程。基于Vue的跨端开发框架结合云函数,为消息推送提供了高效、可靠的解决方案。