8***@qq.com
8***@qq.com
  • 发布:2025-11-11 13:13
  • 更新:2025-12-13 17:15
  • 阅读:104

【报Bug】ios在应用活跃时收到推送消息,点击推送消息时,uni.onPushMessage的回调未执行

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 11

手机系统: iOS

手机系统版本号: iOS 26

手机厂商: 苹果

手机机型: 16

页面类型: vue

vue版本: vue2

打包方式: 离线

项目创建方式: CLI

CLI版本号: 2.0.2

示例代码:
       uni.onPushMessage((res) => {    
            this.handlePushClick(res)    
        });    

handlePushClick(res) {    
     uni.showModal({    
          content: `res:${ JSON.stringify(res) }`    
    })    
    if (res && res.data/* && res.type === "click"*/) {    
        if (!res.data.payload || !res.data.payload.type) return;    
        switch (res.type) {    
            case "click":    
                uni.showModal({    
                    content: `click:${ JSON.stringify(res) }`    
                })    
                break;    
            case "receive":    
                uni.showModal({    
                    content: `receive:${ JSON.stringify(res) }`    
                })    
                break    
        }    
    }

操作步骤:

ios在应用活跃时收到推送消息,点击推送消息时,uni.onPushMessage的回调未执行;但是在应用进程关闭的情况下收到了推送消息,点击消息能正常执行回调

预期结果:

应用活跃时点击消息可进入uni.onPushMessage的回调执行

实际结果:

ios在应用活跃时收到推送消息,点击推送消息时,uni.onPushMessage的回调未执行

bug描述:

ios在应用活跃时收到推送消息,点击推送消息时,uni.onPushMessage的回调未执行;但是在应用进程关闭的情况下收到了推送消息,点击消息能正常执行回调

2025-11-11 13:13 负责人:无 分享
已邀请:
牛奶包子

牛奶包子

根据知识库内容,iOS应用在前台活跃时收到推送消息,确实存在特殊处理机制:

iOS系统限制导致应用在前台时只能收到透传消息(不会自动弹出通知),需要开发者自行在receive回调中处理展示逻辑。

uni.onPushMessage需要在应用启动时注册(如App.vue的onLaunch中),建议检查注册时机是否正确。在应用关闭后点击通知能触发回调,说明基本功能正常。

确保使用的是云打包后的正式版本,HBuilder标准基座不支持完整推送功能。

参考解决方案:

  • 检查透传消息的receive回调处理逻辑
    • 确认消息监听注册在应用生命周期早期
    • 使用云打包测试真实环境
  • 来源链接
  • 内容为 AI 生成,仅供参考

要回复问题请先登录注册