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
相关产品推荐
相关产品推荐

