// 设备推送
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
},

- 发布:2025-08-06 11:25
- 更新:2025-08-14 15:08
- 阅读:108
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: windows11
HBuilderX类型: 正式
HBuilderX版本号: 4.75
手机系统: Android
手机系统版本号: Android 15
手机厂商: 华为
手机机型: 华为畅享60
页面类型: vue
vue版本: vue2
打包方式: 离线
项目创建方式: HBuilderX
示例代码:
操作步骤:
uniapp离线打包后,本地资源放在安卓离线工程在线运行或者打包apk后,运行app,在前台或者切换到后台, 个推推送消息。手机收到通知栏信息,点击后打开app,没有进入回调事件
uniapp离线打包后,本地资源放在安卓离线工程在线运行或者打包apk后,运行app,在前台或者切换到后台, 个推推送消息。手机收到通知栏信息,点击后打开app,没有进入回调事件
预期结果:
能够触发 plus.push.addEventListener事件和 uni.onPushMessage事件
能够触发 plus.push.addEventListener事件和 uni.onPushMessage事件
实际结果:
没有触发监听事件
没有触发监听事件
bug描述:
uniapp 接入了unipush2.0 推送。 离线打包后,可以收到个推消息(有通知栏),但是点击消息进不了push回调事件。 使用hbuilderX在线调试是正常的。离线打包后后不正常。
i***@fjskec.com (作者)
你好, 是透传,在线消息
2025-08-12 13:40
DCloud_Android_THB
回复 i***@fjskec.com: 透传 force_notification ?
2025-08-12 15:20
i***@fjskec.com (作者)
回复 DCloud_Android_THB: 有的,在云函数里面的推送方法有传参
// 发送消息 最大一次推送数据为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回去
}
2025-08-13 10:34
DCloud_Android_THB
回复 i***@fjskec.com: 麻烦发下appid,我看看你的配置
2025-08-13 16:56
i***@fjskec.com (作者)
回复 DCloud_Android_THB: "UNI80EA941" “UNI”前后分别有两个下划线“__”
2025-08-13 17:44
DCloud_Android_THB
回复 i***@fjskec.com: 你再打一次包,我这搜不到你的打包记录
2025-08-14 11:29
i***@fjskec.com (作者)
回复 DCloud_Android_THB: 好的。已打包,我打包方式为:发行-》 App-android/ios-本地打包
2025-08-14 15:07
DCloud_Android_THB
回复 i***@fjskec.com: 你得云打包啊,要不我怎么能在后台看到?
2025-08-15 10:53
i***@fjskec.com (作者)
回复 DCloud_Android_THB: 好的,已云打包
2025-08-15 18:49
DCloud_Android_THB
回复 i***@fjskec.com: 还是没查到, 你再打一次 im联系我也行
2025-08-18 11:34