Ionic3应用使用phonegap-plugin-push时前台通知最小化后消失问题求助
解决Ionic3 + phonegap-plugin-push 后台通知消失问题
嘿,我之前在做Ionic3项目用phonegap-plugin-push时也碰到过一模一样的问题,折腾了好一阵才搞定,给你几个针对性的方案:
1. 调整phonegap-plugin-push的初始化配置
首先检查你初始化插件的代码,确保开启了强制在前台显示通知,并且关闭自动清除通知的选项。这是最直接的修复方式,让系统而非插件来管理通知的生命周期:
const pushOptions = { android: { senderID: '你的SenderID', forceShow: true, // 关键:强制前台收到的推送也显示到系统通知栏 clearNotifications: false, // 禁止插件自动清除通知 icon: 'notification_icon', // 记得在资源文件夹放对应图标 iconColor: '#4CAF50' }, ios: { alert: 'true', badge: 'true', sound: 'true' }, windows: {} }; this.pushObject = this.push.init(pushOptions);
配置后,前台收到的推送会直接进入系统通知栏,应用最小化时这些通知会被系统保留,不会被自动清除。
2. 前台推送手动转本地通知(兜底方案)
如果上面的配置还是没解决问题,可以配合cordova-plugin-local-notification插件,把前台收到的推送转成系统本地通知——这类通知由系统直接维护,不受应用状态影响:
先安装插件:
ionic cordova plugin add cordova-plugin-local-notification npm install @ionic-native/local-notifications@4
然后在推送接收回调里处理:
this.pushObject.on('notification').subscribe((notification: any) => { // 仅在前台收到推送时处理 if (notification.additionalData.foreground) { this.localNotifications.schedule({ id: notification.additionalData.notId || Math.floor(Math.random() * 1000), title: notification.title, text: notification.message, icon: 'res://notification_icon', foreground: true }); } });
3. 配置Android通知渠道(针对Android 8.0+)
Android 8.0及以上版本要求必须配置通知渠道,否则通知可能被系统自动清理。在插件初始化时补充渠道配置:
android: { // 其他配置... channel: 'app_notification_channel', channelName: '应用通知', channelDescription: '接收应用推送通知的渠道' }
创建渠道后,该渠道下的通知会被系统持久化保存,除非用户手动清除。
4. 升级到兼容Ionic3的稳定插件版本
旧版本的phonegap-plugin-push可能存在通知管理的bug,建议升级到和Ionic3匹配的稳定版(Ionic3对应@ionic-native/push v4,推荐插件版本为v2.3.x):
ionic cordova plugin rm phonegap-plugin-push ionic cordova plugin add phonegap-plugin-push@2.3.0
内容的提问来源于stack exchange,提问作者Walid
相关产品推荐
相关产品推荐

