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
}
} - 发布:2025-11-11 13:13
- 更新:2025-12-13 17:15
- 阅读:104
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 11
手机系统: iOS
手机系统版本号: iOS 26
手机厂商: 苹果
手机机型: 16
页面类型: vue
vue版本: vue2
打包方式: 离线
项目创建方式: CLI
CLI版本号: 2.0.2
示例代码:
操作步骤:
ios在应用活跃时收到推送消息,点击推送消息时,uni.onPushMessage的回调未执行;但是在应用进程关闭的情况下收到了推送消息,点击消息能正常执行回调
ios在应用活跃时收到推送消息,点击推送消息时,uni.onPushMessage的回调未执行;但是在应用进程关闭的情况下收到了推送消息,点击消息能正常执行回调
预期结果:
应用活跃时点击消息可进入uni.onPushMessage的回调执行
应用活跃时点击消息可进入uni.onPushMessage的回调执行
实际结果:
ios在应用活跃时收到推送消息,点击推送消息时,uni.onPushMessage的回调未执行
ios在应用活跃时收到推送消息,点击推送消息时,uni.onPushMessage的回调未执行
bug描述:
ios在应用活跃时收到推送消息,点击推送消息时,uni.onPushMessage的回调未执行;但是在应用进程关闭的情况下收到了推送消息,点击消息能正常执行回调
1 个回复
牛奶包子
根据知识库内容,iOS应用在前台活跃时收到推送消息,确实存在特殊处理机制:
iOS系统限制导致应用在前台时只能收到透传消息(不会自动弹出通知),需要开发者自行在
receive回调中处理展示逻辑。uni.onPushMessage需要在应用启动时注册(如App.vue的onLaunch中),建议检查注册时机是否正确。在应用关闭后点击通知能触发回调,说明基本功能正常。确保使用的是云打包后的正式版本,HBuilder标准基座不支持完整推送功能。
参考解决方案:
receive回调处理逻辑