uni-app接入unipush2.0 离线打包后可以收到个推消息(app在线状态)(通知栏消息)但是点击消息进不了push回调事件
uni-app接入unipush2.0 离线打包后可以收到个推消息(app在线状态)(通知栏消息)但是点击消息进不了push回调事件
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | windows11 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:windows11
HBuilderX类型:正式
HBuilderX版本号:4.75
手机系统:Android
手机系统版本号:Android 15
手机厂商:华为
手机机型:华为畅享60
页面类型:vue
vue版本:vue2
打包方式:离线
项目创建方式:HBuilderX
示例代码:
// 设备推送
devicePush() {
// #ifdef APP-PLUS
plus.runtime.setBadgeNumber(0);
plus.push.addEventListener(
'click',
(res) => {
console.log('plus.push.addEventListener-click----', JSON.stringify(res))
uni.showToast({
title: 'click:' + JSON.stringify(res),
icon: 'none',
})
let path = `/pages/task/index`;
if (res.data.payload && res.data.payload.route) {
path = res.data.payload.route;
}
this.goPage(path);
},
false
);
plus.push.addEventListener(
'receive',
(res) => {
console.log('plus.push.addEventListener-receive----', JSON.stringify(res))
uni.showToast({
title: 'receive:' + JSON.stringify(res),
icon: 'none',
})
let path = `/pages/task/index`;
if (res.data.payload && res.data.payload.route) {
path = res.data.payload.route;
}
this.goPage(path);
},
false
);
uni.onPush(res => {
console.log('uni.onPush收到推送消息onPush:---', JSON.stringify(res))
uni.showToast({
title: '收到推送消息onPush:' + JSON.stringify(res),
icon: 'none',
})
if (res.type === 'receive') {
// 前台收到消息
console.log('应用在前台接收到推送:', res.data);
} else if (res.type === 'click') {
// 用户点击通知栏
console.log('用户点击了通知栏:', res.data);
}
});
uni.onPushMessage(res => {
console.log('uni.onPushMessage收到推送消息onPushMessage:---', JSON.stringify(res))
uni.showToast({
title: '收到推送消息onPushMessage:' + JSON.stringify(res),
icon: 'none',
})
let path = `/pages/task/index`;
if (res.data.payload && res.data.payload.route) {
path = res.data.payload.route;
}
this.goPage(path);
});
// #endif
}
`更多关于uni-app接入unipush2.0 离线打包后可以收到个推消息(app在线状态)(通知栏消息)但是点击消息进不了push回调事件的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你是离线消息还是透传
更多关于uni-app接入unipush2.0 离线打包后可以收到个推消息(app在线状态)(通知栏消息)但是点击消息进不了push回调事件的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你好, 是透传,在线消息
回复 i***@fjskec.com: 透传 force_notification ?
// 发送消息 最大一次推送数据为500 async function sendMessage(obj) { const res = await uniPush.sendMessage({ // “push_clientid”: obj.cids, // 设备id,支持多个以数组的形式指定多个设备,如[“cid-1”,“cid-2”],数组长度不大于1000 “getui_alias”: obj.deviceData.getuiAlias, // 个推自定义客户端别名,指定消息接收者。支持多个以数组的形式指定多个设备,如[“getui_alias-1”,“getui_alias-2”],数组长度不大于1000 “title”: obj.deviceData.title, // 标题 “content”: obj.deviceData.content, // 内容 “payload”: obj.deviceData.payload, // 数据 “force_notification”: true, // 服务端推送 需要加这一句 “request_id”: obj.deviceData.requestId, //请求唯一标识号,10-32位之间;如果request_id重复,会导致消息丢失 “options”: { // 额外选项,例如设置透传消息 // 透传消息内容(可选),如果设置,则会在应用前台时直接收到此消息(触发receive事件) “transmission”: { “transmission_type”: true, // 是否启用透传 “transmission_content”: obj.deviceData.payload // 可以是字符串或对象(需JSON.stringify) } } }) return res //一定要return回去 }
回复 i***@fjskec.com: 麻烦发下appid,我看看你的配置
回复 DCloud_Android_THB: “UNI80EA941” “UNI”前后分别有两个下划线“__”
回复 i***@fjskec.com: 你再打一次包,我这搜不到你的打包记录
回复 DCloud_Android_THB: 好的。已打包,我打包方式为:发行-》 App-android/ios-本地打包
回复 i***@fjskec.com: 你得云打包啊,要不我怎么能在后台看到?
回复 DCloud_Android_THB: 好的,已云打包
回复 i***@fjskec.com: 还是没查到, 你再打一次 im联系我也行
这个是appId截图
在uni-app离线打包场景下,点击推送消息无法触发回调事件通常与以下因素相关:
-
推送消息格式问题
离线打包时,推送消息需包含payload字段且格式正确。检查个推后台推送配置,确保消息体包含完整的payload数据:{ "title": "通知标题", "content": "内容", "payload": { "route": "/pages/task/index" } } -
应用生命周期状态
应用被杀死后点击通知,需通过app.vue的onLaunch中处理冷启动参数:export default { onLaunch: function(options) { if (options.plus) { const pushMsg = options.plus.pushMessage; if (pushMsg) { // 处理点击通知冷启动逻辑 this.handlePushClick(pushMsg); } } } } -
事件监听时机
确保推送事件监听在应用初始化时执行。建议在App.vue的onShow中统一注册:onShow() { plus.push.addEventListener('click', (msg) => { console.log('点击事件触发:', msg); // 跳转逻辑 }); } -
离线打包配置验证
检查原生工程中UniPush SDK配置:- Android需确认
UniPushMessageReceiver在Manifest中正确注册 - 确保个推AppID/AppKey/AppSecret与云端一致
- Android需确认
-
调试方案
在app.vue中添加全局日志捕获:// 检测启动参数 console.log('应用启动参数:', JSON.stringify(plus.runtime.arguments));


