uni-app x uni-push 2.0 推送实现求助
实现思路整理
1. 推送配置(manifest.json)
"app-plus": {
"modules": {
"Push": true
},
"push": {
"unipush": {
"enable": true,
"appid": "__UNI__D2F0A5C"
}
}
}
2. 客户端推送初始化(App.uvue)
- 在
onLaunch和onShow生命周期中获取并上传推送客户端ID(CID) - 通过
uni.getPushClientId()获取CID - 将CID与用户ID关联,通过云函数保存到
uni-id-device集合
3. 推送发送流程(船长端)
- 船长点击"出行提醒"按钮
- 调用
sendPushNotification云函数 - 云函数查询该订单用户的设备信息
- 使用
uniCloud.getPushManager()创建推送管理器 - 调用
sendMessage()发送推送 - 云函数返回推送结果
4. 云函数核心代码(sendPushNotification)
const appId = '__UNI__D2F0A5C';
const pushManager = uniCloud.getPushManager({ appId });
const pushResult = await pushManager.sendMessage({
push_clientid: finalPushClientIds,
title: title,
content: content,
payload: pushPayload
});
5. 推送接收处理(App.uvue)
onPushMessage(res) {
// 解析推送消息
let title = res.title || '';
let content = res.content || '';
let payload = res.payload || {};
// 创建本地通知
uni.createPushMessage({
title: title,
content: content,
success: () => {
console.log('[推送] 本地通知创建成功');
},
fail: (err) => {
console.error('[推送] 本地通知创建失败:', err);
}
});
}
## 遇到的问题
### 现象
- 船长点击"出行提醒"后,云函数日志显示推送发送成功:
[云函数推送] sendMessage调用结果: {"errCode":0,"errMsg":"success","data":{"data":{"pushClientId":"xxx","status":"successed_online"}}}
- 但客户端手机通知栏未收到任何推送提醒
### 已排查的情况
1. ✅ 云函数执行成功,无错误日志
2. ✅ 云函数正确查询到用户设备的CID
3. ✅ 推送参数格式正确
4. ✅ 客户端已获取并上传CID到数据库
5. ✅ 客户端已实现onPushMessage监听
6. ✅ 用户设备处于在线状态
7. ✅ 应用推送权限已开启
### 1. 使用DCloud开发者中心测试
- 登录DCloud开发者中心
- 进入uni-push 2.0模块
- 使用获取到的CID直接发送测试推送,CID调试成功,可以成功推送到客户端
下面?附件中是云函数调用日志