2016-07-24 15 views

Antwort

3

Sie können die Notification.close() method verwenden. Sie können das Objekt Notification mit Ihrer Benachrichtigung verknüpfen, indem Sie das Objekt NotificationEvent verwenden, das von ServiceWorkerRegistration.showNotification zurückgegebene Versprechen zurückgibt.

Etwas wie folgt aus:

self.addEventListener('push', event => { 
    event.waitUntil(
    self.registration.showNotification('Title', { 
     body: 'Body.', 
    }) 
    .then(notificationEvent => { 
     let notification = notificationEvent.notification; 
     setTimeout(() => notification.close(), 60000); 
    }) 
); 
}); 

Eine andere mögliche Lösung ist es, alle Meldungen bekommen Sie mit ServiceWorkerRegistration.getNotifications zeigt sind.

Zum Beispiel:

self.addEventListener('push', event => { 
    event.waitUntil(
    self.registration.showNotification('Title', { 
     body: 'Body.', 
    }) 
    .then(() => self.registration.getNotifications()) 
    .then(notifications => { 
     setTimeout(() => notifications.forEach(notification => notification.close()), 60000); 
    }) 
); 
}); 
+0

Die notificationEvent Variable in Versprechen ist nicht definiert und das ist, warum es nicht schließt. Bitte helfen Sie !! – Supermacy

+0

Versuchen Sie die alternative Lösung. – Marco

+0

Von Chrome Version 59.0.3071.115 (Official Build) (64-Bit) zweite Lösung funktioniert seltsam. Immer wenn ich Nachrichten von meinem Server pushe, erhalte ich eine standardmäßige Benachrichtigungsfunktion (Diese Seite wurde im Hintergrund aktualisiert). –

Verwandte Themen