uniPush2.0推送
一、开通uniPush2.0
1.实名认证
登录DCloud开发者中心,通过实名认证
2.进入UniPush控制台
- HBuilderX中打开项目的manifest.json文件
- 导航在“App模块配置” → 项的“Push(消息推送)” → “UniPush”下点击配置 或者申请开通。

3.配置应用信息
在UniPush开通界面配置以下信息:
- Android包名
- Android应用签名
- iOS Bundle Id 点击"开通"完成服务启用

详细说明请参考 UniPush开通指南
二、前端推送服务对接
1. 配置uniCloud服务
- 开通uniCloud服务(推荐阿里云)
- 创建云函数,用于处理推送逻辑
- 详细步骤参考官方文档


2. 添加push模块
设置targetSdkersion(targetSdkersion过高有些手机运行不了)
找到刚刚添加的push模块,创建云函数处理推送请求:

'use strict';
const uniPush = uniCloud.getPushManager({
appId: "__UNI__****"
})
exports.main = async (event) => {
let obj = JSON.parse(event.body)
const res = await uniPush.sendMessage({
"push_clientid": obj.cids, // 设备id,支持多个以数组的形式指定多个设备,如["cid-1","cid-2"],数组长度不大于1000
"title": obj.title, // 标题
"content": obj.content, // 内容
"payload": obj.data, // 数据
"force_notification": true, // 服务端推送 需要加这一句
"request_id": obj.request_id //请求唯一标识号,10-32位之间;如果request_id重复,会导致消息丢失
})
return res //一定要return回去
};
3.部署云函数
右键点击新建的云函数,选择"上传部署"
4.配置云函数URL化
- 进入uniCloud控制台
- 找到已上传的云函数并查看详情

- 配置云函数url化,设置URL的PATH部分(作用是,后端直接调接口然后进行推送)

- 完成后获得完整URL用于后端调用

5. 客户端监听处理
onLaunch() {
// #ifdef APP-PLUS
plus.push.addEventListener("click", function(msg) {
console.log(msg);
uni.switchTab({
url:'/pages/user/index'
})
}, false);
uni.getPushClientId({
success: res => {
//这个id要和用户绑定好,推送消息需要使用
console.log(res.cid);
}
})
// #endif
}
参考资料:
6. 构建自定义基座
- 勾选配置文件(如果要配置离线,请先看下面厂商集成那部分)
- 打包并运行自定义基座

7.测试验证
运行自定义基座前:
- 卸载手机中所有相关历史应用
- 获取并验证 cid 是否正确获取

三、离线消息厂商集成
1.勾选集成厂商 参考集成厂商配置指南
个推通道优先,在线走个推,离线走厂商(默认策略)
在线推送:
当应用在前台运行时(CID在线),消息通过个推通道直接下发到客户端。 可以接收完整的消息内容(通知或透传),客户端能立即监听到并处理。
离线推送:
当应用在后台、锁屏或进程关闭时(CID离线),需依赖厂商推送通道(如华为、小米等)。 消息由厂商服务器下发,仅展示为系统通知栏消息,用户点击后才会唤醒应用并触发消息监听。
关键差异:
1、 在线推送实时性高,离线推送依赖厂商服务; 2、 离线推送需单独配置厂商参数(Android)

2.DCloud工作台配置厂商信息
3.详细集成文档
各厂商具体集成方式参考厂商集成指南
四、后端消息推送集成
1. yml配置
UniPush配置 云函数 URL 化地址

2. 推送消息
PushMessageDTO pushMessageDTO = new PushMessageDTO();
pushMessageDTO.setTitle("标题"); //推送标题
pushMessageDTO.setUserIds(Arrays.asList(userIds)); //推送用户
pushMessageDTO.setContent("内容"); //推送内容
//调用推送发放
sysBaseApi.uniPushMsgToUser(pushMessageDTO);
五、常见问题
参考常见问题解答