在移动应用中,“通知”是提升用户活跃度、增强业务触达能力的核心能力。
Uni-app 作为跨端框架,支持多种通知方式,但很多开发者并没有真正理解它们的区别与应用场景。
本文将系统讲清楚:
✅ 通知类型分类
✅ 各平台支持情况(H5 / App / 小程序)
✅ 代码实战
✅ 推送服务选型
✅ 企业级架构设计
在 Uni-app 生态中,“通知”并不是一个概念,而是四种不同技术方案:
| 类型 | 适用场景 | 是否需要服务器 |
|---|---|---|
| Toast 提示 | 短消息提醒 | ❌ |
| Modal 弹窗 | 强提醒 | ❌ |
| 本地通知 | 定时提醒 | ❌ |
| 推送通知 | 远程消息 | ✅ |
| 通知类型 | App | H5 | 小程序 |
|---|---|---|---|
| Toast | ✅ | ✅ | ✅ |
| Modal | ✅ | ✅ | ✅ |
| 本地通知 | ✅ | ❌ | ❌ |
| 推送通知 | ✅ | ⚠️(WebPush) | ⚠️ |
适用于轻量级提示,比如:
“保存成功”、“登录失败”
uni.showToast({
title: '操作成功',
icon: 'success',
duration: 2000
})
✅ 非阻塞
✅ 自动消失
❌ 不能交互
适合强提示,比如:
“确认删除?”
uni.showModal({
title: '提示',
content: '确认删除?',
success(res) {
if (res.confirm) {
console.log('用户确认')
}
}
})
✅ 支持用户交互
✅ 阻塞操作
本地通知是:
由 App 自己触发的通知,不依赖服务器
plus.push.createMessage(
"你有一条待办事项",
"task_001",
{
title: "任务提醒"
}
)
plus.push.createMessage(
"喝水提醒",
"drink_water",
{
title: "健康提醒",
delay: 60000 // 60秒后触发
}
)
plus.push.addEventListener("click", function(msg) {
console.log("用户点击通知", msg)
})
服务器 → 手机 → 通知栏
| 方案 | 优点 | 缺点 |
|---|---|---|
| UniPush | 官方推荐 | 依赖 DCloud |
| Firebase | 全球稳定 | 国内不友好 |
| 个推 | 国内成熟 | 收费 |
| 极光 | 功能强 | 收费 |
| 自建 MQTT | 可控 | 成本高 |
进入:
DCloud → 应用管理 → 消息推送
plus.push.getClientInfoAsync(info => {
console.log("CID:", info.clientid)
})
uni.request({
url: "/api/registerCid",
data: {
cid: info.clientid
}
})
https://restapi.getui.com/v2/{appId}/push/single/cid
{
"request_id": "123456",
"settings": {
"ttl": 3600000
},
"push_message": {
"notification": {
"title": "新订单",
"body": "你有一个新订单"
}
},
"audience": {
"cid": ["xxxx"]
}
}
plus.push.addEventListener("click", function(msg) {
uni.navigateTo({
url: "/pages/order/detail?id=" + msg.payload.orderId
})
})
{
"type": "ORDER",
"orderId": "123",
"title": "新订单"
}
| type | 场景 |
|---|---|
| ORDER | 订单 |
| CHAT | 聊天 |
| SYSTEM | 系统 |
| MARKETING | 营销 |
客户端
↓
Push Gateway
↓
消息队列(Kafka / RabbitMQ)
↓
推送服务
✅ 批量推送
✅ CID 分组
✅ 异步队列
✅ 推送合并
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
plus.push.requestPermission()
可能原因:
解决方案:
✅ 厂商通道
✅ 提高优先级
原因:
✅ UniPush + 本地通知
✅ MQTT + UniPush + WebSocket
| 功能 | 技术 |
|---|---|
| 即时聊天 | WebSocket |
| 离线通知 | Push |
| 定时提醒 | Local |
| UI 提示 | Toast |
Toast + Modal + Local + Push
✅ 可靠性优先
✅ 实时性分级
✅ 精准触达
Uni-app 通知体系不是单一 API,而是一整套消息触达架构。
真正成熟的 App,一定是“通知驱动型系统”。
-- 以上来自ChatGpt




