2015-01-07 4 views
2

Как удалить уведомление, которое было отображено (присутствовать на телефонной панели), но не повторить попытку пользователя? используя cordova https://github.com/katzer/cordova-plugin-local-notifications/Как удалить отображаемое уведомление с помощью cordova

Я проверяю другой способ, но не получил никаких свойств или функций. хотя при регистрации

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 

Это работает, но как я могу удаляется с помощью кодирования.

Я попытался отменить По идентификатору

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

будет регистрироваться в onTrigger. и отменить по идентификатору будет работать через 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)); 
} 

ответ

1

Вы должны использовать отменить метод, чтобы удалить уведомления по его идентификатор. Из документации плагина:

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

где идентификатор просто идентификатор уведомления вы хотите уволить.

Как вы упомянули autoCancel это сделать отменяя автоматически когда пользователь щелкает уведомление. Если это не так, вам нужно отменить его из Кордовы, когда вы обрабатываете обратный вызов этого уведомления.

Update

Как оказалось, что вы используете

new Date() 

как идентификатор для уведомлений добавлены, это является причиной, так как есть это ограничение

Примечание : На Android идентификатор уведомления должен быть строкой, которая может быть конвертирована в nu mber. Если идентификатор имеет недопустимый формат, он будет проигнорирован, но отмена уведомления не удастся.

и new Date() дает что-то вроде

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

который не конвертируется в число.

+0

Я сделал это, но уведомление все еще существует –

+0

при нажатии удаления уведомления, но отменить по id не –

+0

@MohammadFaizanKhan: можете ли вы показать пример идентификатора, который используете? –

0

Я думаю, что здесь немного смущения терминов. «Уведомление» используется для обозначения инструкции операционной системе для планирования серии повторяющихся сообщений и используется для обозначения одного экземпляра этих сообщений.

Атрибут autoCancel используется для автоматического удаления одного экземпляра уведомляющего сообщения из панели сообщений и окна Android, когда пользователи отключают его, чтобы запустить приложение.Если вы установите значение false, значок приложения останется видимым в этих областях, пока пользователь не удалит его вручную.

Чтобы ответить на исходный вопрос: плагин Katzer не имеет возможности удалить значок приложения, связанный с экземпляром уведомления, отличным от атрибута autoCancel.

Смежные вопросы