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

Cordova本地通知插件获取计划通知时Alert返回[object Object]求助

解决Cordova本地通知插件getScheduled返回[object Object]的问题

我明白你遇到的问题了——调用getScheduled获取已计划通知时,弹窗显示[object Object],这是因为返回的notifications是对象数组,直接用join(', ')会把每个对象默认转为[object Object]字符串,而非你需要的具体内容。另外你的getScheduled函数还有个小问题:更新reminderCount的代码放在了异步操作外部,会导致无法正确获取通知数量。

下面是具体的解决方案:

1. 将通知对象转换为可读字符串

修改你的callbackOpts函数,用map遍历数组,把每个通知对象的关键属性(比如id、title)拼接成可读的字符串:

var callbackOpts = function(notifications) { 
    // 把每个通知对象转换成包含关键信息的字符串
    var readableNotifications = notifications.map(notification => {
        return `ID: ${notification.id}, 标题: ${notification.title}, 提示内容: ${notification.text}`;
    });

    // 用转换后的字符串数组展示弹窗,换行分隔更清晰
    navigator.notification.alert(
        notifications.length === 0 ? '- none -' : readableNotifications.join('\n'),
        null,
        '已计划的通知'
    ); 

    // 更新通知数量(必须放在回调内,因为getScheduled是异步操作)
    var count = notifications.length; 
    document.getElementById("reminderCount").innerHTML = count; 
}; 

2. 修正异步操作的DOM更新逻辑

cordova.plugins.notification.local.getScheduled是异步方法,你原来在函数外部更新reminderCount的代码会在通知数据还未获取到的时候就执行,导致count未定义。把这部分代码移到回调里就没问题了,修改后的getScheduled函数:

function getScheduled() { 
    cordova.plugins.notification.local.getScheduled(callbackOpts); 
    // 移除此处的DOM更新代码,因为count是回调内的局部变量,外部无法访问
}

额外调试提示

如果想了解每个通知对象的完整属性结构,可以在回调里打印JSON格式的内容,方便调试:

var callbackOpts = function(notifications) { 
    console.log('已计划通知详情:', JSON.stringify(notifications, null, 2));
    // 其他代码...
}; 

这样就能清晰看到每个通知的所有属性,按需调整要展示的内容啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:14:52