uni-app 离线推送 plus.push.addEventListener 没有执行
uni-app 离线推送 plus.push.addEventListener 没有执行
项目信息 | 详情 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Mac |
PC开发环境操作系统版本号 | 14.2.1 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 3.99 |
手机系统 | Android |
手机系统版本号 | Android 14 |
手机厂商 | 华为 |
手机机型 | p30 |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
操作步骤:
项目App.vue
onLaunch() {
plus.push.addEventListener(
"click",
(message) => {
console.log(123123113)
//处理点击消息的业务逻辑代码
console.log(msg, "msg")
},
false
)
uni.onPushMessage((res) => {
console.log("收到推送消息:", res) //监听推送消息
})
}
使App处于离线状态,发布离线消息推送,点击系统通知栏进入App
预期结果:
在线、离线点击都触发plus.push.addEventListener(
"click",
(message) => {
console.log(msg, "msg")
},
false
)
实际结果:
在线触发,离线没有触发plus.push.addEventListener(
"click",
(message) => {
console.log(msg, "msg")
},
false
)
bug描述:
注: 在uni-push2.0的问题交流群问了,工作人员说我步骤没有问题
更多关于uni-app 离线推送 plus.push.addEventListener 没有执行的实战教程也可以访问 https://www.itying.com/category-93-b0.html
uni.onPushMessage 点击的时候触发了么?接收的时候出发了没
可以给你的云函数发出来看一眼
更多关于uni-app 离线推送 plus.push.addEventListener 没有执行的实战教程也可以访问 https://www.itying.com/category-93-b0.html
“use strict”
const uniPush = uniCloud.getPushManager({ appId: “…” }) //注意这里需要传入你的应用appId exports.main = async (event, context) => { let obj = JSON.parse(event.payload) console.log(obj, “obj”) return await uniPush.sendMessage({ push_clientid: obj.cids, //填写上一步在uni-app客户端获取到的客户端推送标识push_clientid force_notification: true, //填写true,客户端就会对在线消息自动创建“通知栏消息”。 title: obj.title, content: obj.content, payload: obj.data, options: { HW: { // 值为int 类型。1 表示华为测试消息,华为每个应用每日可发送该测试消息500条。此 target_user_type 参数请勿发布至线上。 “/message/android/target_user_type”: 1, }, VV: { //值为int 类型。0 表示正式推送;1 表示测试推送,不填默认为0。此 pushMode 参数请勿发布至线上。 “/pushMode”: 1, }, }, }) },uni.onPushMessage 在线的时候触发了,离线就没有触发
回复 2***@qq.com: 把这个注释掉再试试 force_notification: true, //填写true,客户端就会对在线消息自动创建“通知栏消息”。
回复 套马杆的套子: 注释了,还是拿不到
在使用 uni-app 进行离线推送时,plus.push.addEventListener
没有执行可能有多种原因。以下是一些常见的问题和解决方法:
1. 确保设备支持推送功能
- 检查设备是否支持推送功能。某些设备或浏览器可能不支持推送通知。
2. 检查推送服务是否正确配置
- 确保你已经正确配置了推送服务。例如,如果你使用的是第三方推送服务(如个推、极光推送等),确保你已经按照文档正确集成了 SDK 并配置了相关参数。
3. 检查 plus.push
是否初始化成功
- 在使用
plus.push.addEventListener
之前,确保plus.push
已经成功初始化。你可以在plusready
事件中初始化推送服务。
document.addEventListener('plusready', function() {
plus.push.addEventListener('click', function(msg) {
console.log('推送消息被点击:', msg);
}, false);
}, false);
4. 检查权限
- 确保应用已经获得了推送通知的权限。你可以在设备的设置中检查应用的权限。
5. 检查回调函数的注册时机
- 确保
plus.push.addEventListener
是在plusready
事件之后调用的。如果plus.push.addEventListener
在plusready
之前调用,可能会导致回调函数没有正确注册。
6. 检查推送消息的格式
- 确保你发送的推送消息格式正确。如果消息格式不正确,可能会导致
click
事件没有被触发。
7. 调试和日志
- 在代码中添加调试日志,检查
plus.push.addEventListener
是否被调用,以及是否有错误信息输出。
8. 检查应用状态
- 确保应用在前台或后台运行时能够接收到推送消息。有些推送服务可能在应用处于后台或关闭状态时无法触发
click
事件。
9. 检查推送服务的状态
- 如果你使用的是第三方推送服务,确保推送服务正常运行,并且你发送的推送消息已经成功发送到设备。
10. 检查 uni-app 版本和插件版本
- 确保你使用的 uni-app 版本和相关的推送插件版本是最新的,或者至少是兼容的。
示例代码
以下是一个简单的示例代码,展示如何在 plusready
事件中注册推送事件监听器:
document.addEventListener('plusready', function() {
// 初始化推送服务
plus.push.init({
appid: 'your_appid',
appkey: 'your_appkey',
appsecret: 'your_appsecret'
});
// 注册推送消息点击事件
plus.push.addEventListener('click', function(msg) {
console.log('推送消息被点击:', msg);
// 处理推送消息点击事件
}, false);
// 注册推送消息接收事件
plus.push.addEventListener('receive', function(msg) {
console.log('接收到推送消息:', msg);
// 处理推送消息接收事件
}, false);
}, false);