如何使用cordova删除显示的通知

时间:2015-01-07 10:52:41

标签: cordova localnotification

如何删除已显示的通知(电话栏上的预先发送)但用户没有响应?使用cordova https://github.com/katzer/cordova-plugin-local-notifications/

我检查了不同的方法,但没有获得它的任何属性或功能。虽然在注册时

window.plugin.notification.local.add({
    id:         String,  // A unique id of the notification
    date:       Date,    // This expects a date object
    message:    String,  // The message that is displayed
    title:      String,  // The title of the message
    repeat:     String,  // Either 'secondly', 'minutely', 'hourly', 'daily', 'weekly', 'monthly' or 'yearly'
    badge:      Number,  // Displays number badge to notification
    sound:      String,  // A sound to be played
    json:       String,  // Data to be passed through the notification
    autoCancel: Boolean, // Setting this flag and the notification is automatically cancelled when the user clicks it
    ongoing:    Boolean, // Prevent clearing of notification (Android only)
}, callback, scope);

您可以选择

  autoCancel: Boolean, // Setting this flag and the notification is automatically cancelled when the user clicks it

这是有效的,但我如何使用编码删除。

我尝试取消按ID

function cancelLocalNotificationById(id){
        window.plugin.notification.local.cancel(id, function(){
            alert("cancel callback", id);
        });
    }
}

这将在onTrigger中注册。并且id取消将在5秒后运行

function onTrigger(){
 window.plugin.notification.local.ontrigger = function (id, state, json) {
            alert("onTrigger fired");
            alert(id);

                // Cancel alert after 5 seconds...
                timeouts.push(setTimeout(function(){
                    cancelLocalNotificationById(id);
                    alert(id);
                    //alert("cancel reslut"+cancel.status);
                },5000));
}

2 个答案:

答案 0 :(得分:1)

您应该使用取消方法通过其ID删除通知。从插件文档:

window.plugin.notification.local.cancel(ID, function () {
    // The notification has been cancelled
}, scope);

其中 id 只是您要解雇的通知的ID。

正如您所提到的, autoCancel 是在用户点击通知时自动取消 。如果不是这样,您需要在处理该通知的回调时从Cordova中取消它。

<强>更新

事实证明你正在使用

new Date()

作为添加通知的 id ,这是因为存在此限制

的原因
  

注意:在Android上,通知ID必须是一个字符串即可   转换为数字。如果ID格式无效,则格式为   忽略,但取消通知将失败。

new Date()会产生类似

的内容
Wed Jan 07 2015 14:16:10 GMT+0200 (FLE Standard Time)

不能转换为数字。

答案 1 :(得分:0)

我认为这里的术语有些混乱。 &#34;通知&#34;用于表示操作系统调度一系列重复消息的指令,它用于指代这些消息的单个实例。

autoCancel属性用于在用户点击它以启动您的应用时自动从Android消息栏和窗口中删除通知消息的单个实例。如果将此设置为false,则应用程序图标在这些区域中仍然可见,直到用户手动删除它为止。

回答原始问题:Katzer的插件无法删除与autoCancel属性以外的通知实例关联的应用图标。