uni-app uniappx onPushMessage 收到推送崩溃

uni-app uniappx onPushMessage 收到推送崩溃

项目信息 详情
产品分类 uniapp/App
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 最新
HBuilderX类型 正式
HBuilderX版本号 4.76
手机系统 iOS
手机系统版本号 iOS 18
手机厂商 苹果
手机机型 iphone 15
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

示例代码:

uni.onPushMessage((res:any) => {
console.log('onPushMessage', res)
uni.showToast({
title:'收到了云推送或点击状态栏消息',
})
})  

就这一句监听命令


### 操作步骤:

```javascript
uni.onPushMessage((res:any) => {
console.log('onPushMessage', res)
uni.showToast({
title:'收到了云推送或点击状态栏消息',
})
})

预期结果:

不蹦


### 实际结果:

蹦

bug描述:

uniappx onPushMessage 收到推送崩溃 具体情况为:app 打开状态收到 推送的消息,直接崩溃,app 关闭状态 收到推送没事, 点击消息拉起app,正常, iOS 的崩溃日志已通过附件上传

hbx 版本为 4.75


更多关于uni-app uniappx onPushMessage 收到推送崩溃的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

已知问题,下版本会修复

更多关于uni-app uniappx onPushMessage 收到推送崩溃的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 uni-app x 中使用 onPushMessage 监听推送消息时出现崩溃,这是一个已知的兼容性问题。根据你提供的信息,问题主要出现在:

  1. 运行环境:iOS 18 + iPhone 15 + uni-app x + Vue 3
  2. 触发条件:App 处于前台时收到推送消息
  3. 崩溃特征:直接崩溃,但后台推送和点击消息拉起正常

问题分析:

  • uni-app x 的 onPushMessage 事件处理机制在 App 前台运行时存在内存管理问题
  • 可能是事件回调函数中的 showToast 与推送消息到达时的应用状态冲突导致
  • iOS 18 系统对推送消息的处理逻辑变更可能加剧了这个问题

临时解决方案:

  1. 移除 showToast 调用,仅保留日志输出:
uni.onPushMessage((res:any) => {
    console.log('onPushMessage', res)
    // 暂时注释掉 showToast
    // uni.showToast({title:'收到了云推送或点击状态栏消息'})
})
  1. 使用条件判断控制 toast 显示:
uni.onPushMessage((res:any) => {
    console.log('onPushMessage', res)
    // 延迟执行避免冲突
    setTimeout(() => {
        uni.showToast({title:'收到了云推送或点击状态栏消息'})
    }, 100)
})
回到顶部