跳到主要内容

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);

五、常见问题

参考常见问题解答