You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cordova跨平台APP本地通知实现方案问询(支持前后台)

实现Cordova跨平台APP前台/后台本地通知的可靠方案

针对你用Cordova + Express开发Android/iOS APP,已经通过phonegap-plugin-push接收GCM推送,现在需要实现全状态(前台/后台)本地通知的需求,我推荐两个经过社区广泛验证的方案,附具体实现步骤:


方案一:使用cordova-plugin-local-notifications(最推荐)

这是目前Cordova生态中最成熟、维护最活跃的本地通知插件,完美支持Android(API 19+)和iOS(10+),且对前台、后台、甚至APP被杀死后的场景都有良好的处理。

1. 安装插件

在项目根目录执行:

cordova plugin add cordova-plugin-local-notifications

2. 基础配置与初始化

在deviceready事件中初始化插件,同时请求通知权限(iOS必须,Android 13+也需要):

document.addEventListener('deviceready', function() {
    // 请求通知权限
    cordova.plugins.notification.local.requestPermission().then(function(granted) {
        if (granted) {
            console.log('通知权限已获取');
            // 注册通知点击事件监听
            cordova.plugins.notification.local.on('click', function(notification) {
                // 处理通知点击逻辑,比如跳转指定页面
                console.log('点击了通知:', notification);
            });
        } else {
            console.log('用户拒绝了通知权限');
        }
    });
}, false);

3. 发送本地通知

无论APP处于前台还是后台,都可以调用以下方法发送通知:

// 发送即时本地通知
cordova.plugins.notification.local.schedule({
    id: 1, // 唯一ID,用于后续更新/取消通知
    title: '新消息提醒',
    text: '你有一条未读消息',
    foreground: true, // 允许前台显示通知(iOS默认前台不显示,需设为true)
    sound: 'default', // 播放默认提示音
    data: { customData: '自定义数据' } // 携带自定义数据,点击时可获取
});

// 发送延迟通知(比如5分钟后)
cordova.plugins.notification.local.schedule({
    id: 2,
    title: '定时提醒',
    text: '5分钟到了',
    at: new Date(new Date().getTime() + 5*60*1000),
    sound: 'default'
});

4. 前台/后台适配注意事项

  • iOS前台显示:默认iOS在APP前台时不会弹出通知,需要在schedule选项中设置foreground: true,同时确保在Info.plist中开启UIBackgroundModes的remote-notification(如果之前配置GCM时已经加过,就不用重复加)。
  • Android渠道配置:Android 8.0+需要创建通知渠道,插件会自动创建默认渠道,但你也可以自定义:
    cordova.plugins.notification.local.createChannel({
        id: 'custom_channel',
        name: '自定义通知渠道',
        description: '用于展示重要消息',
        importance: 4 // 对应Android的通知重要等级,4为高
    });
    // 发送时指定渠道
    cordova.plugins.notification.local.schedule({
        id: 3,
        title: '渠道通知',
        text: '这是自定义渠道的通知',
        channelId: 'custom_channel'
    });
    

方案二:复用phonegap-plugin-push的本地通知功能

如果你不想额外安装插件,phonegap-plugin-push本身也支持发送本地通知,适合已经在使用该插件的场景:

1. 发送本地通知示例

// 假设你已经初始化了push对象
var push = PushNotification.init({
    android: { senderID: '你的GCM Sender ID' },
    ios: { alert: 'true', badge: 'true', sound: 'true' }
});

// 发送本地通知
push.localNotification({
    title: '本地通知',
    message: '通过phonegap-plugin-push发送的本地通知',
    foreground: true, // iOS前台显示需设为true
    sound: 'default',
    data: { key: 'value' }
});

注意事项

  • 该插件的本地通知功能相对基础,复杂场景(比如定时重复通知、自定义渠道高级配置)不如cordova-plugin-local-notifications灵活。
  • 同样需要确保权限配置正确,iOS的Info.plist和Android的AndroidManifest.xml权限已添加。

总结

如果需要更强大、灵活的本地通知功能(比如定时、重复、自定义渠道、APP杀死后仍能触发定时通知),优先选择cordova-plugin-local-notifications;如果只是简单的即时本地通知,复用phonegap-plugin-push可以减少插件依赖。

两种方案都能在APP前台、后台状态下正常工作,只要按照上述配置和代码实现即可。

内容的提问来源于stack exchange,提问作者Rodolfo Simoes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:25:01