2017-08-15 2 views
0

Wenn Sie Push-Benachrichtigungen mithilfe von Service Worker implementieren, können wir die Benachrichtigungen direkt an den Endpunkt senden. Aber auf meiner Website werden die Benachrichtigungen von einer externen API abgerufen. Gibt es eine Möglichkeit von meinem Service-Mitarbeiter, nach Benachrichtigungen zu suchen, um festzustellen, ob eine neue Benachrichtigung vorhanden ist?Können wir nach einer Benachrichtigung von Service Worker fragen

Antwort

1

Wenn Ihre Webanwendung geöffnet ist, können Sie Benachrichtigungen anzeigen, indem Sie nach bestimmten Kriterien suchen (eine API abrufen usw.) und dann Notifications API verwenden.

Dies erfordert keinen Service-Mitarbeiter. Die Verwendung eines Service-Mitarbeiters + push Ereignisse zum Auslösen Ihrer Benachrichtigungen bedeutet, dass Ihre Benachrichtigungen auch dann angezeigt werden, wenn Ihre Webanwendung geschlossen ist, und dass es effizienter ist, auf push Ereignisse zu warten oder wiederholt eine API abzurufen.

Sie könnten theoretisch eine Kombination aus Polling und explizitem Aufruf der Notifications-API verwenden, wenn Ihre Webanwendung geöffnet ist, und zusätzlich einen Service-Mitarbeiter registrieren, der auf push-Ereignisse wartet. Wenn Sie sich jedoch bemühen, den Anwendungsfall für Service-Mitarbeiter zu unterstützen, ist es möglicherweise sauberer, sich nur auf den Service-Mitarbeiter für alle Ihre Benachrichtigungen zu verlassen.

Ein Unterschied zwischen den beiden Ansätzen besteht darin, dass die Verwendung der Benachrichtigungs-API während Ihrer Webanwendung supported in more browsers (Stand August 2017) als servicearbeiterbasierte Push-Benachrichtigungen erfolgt.

+0

Meine Anforderung besteht darin, die Push-Benachrichtigung auch anzuzeigen, wenn die Anwendung geschlossen ist. Also benutze ich Service-Mitarbeiter und ich bekomme die Benachrichtigungen, die vom Server gesendet werden. Mein Problem ist, dass es in meiner Anwendung eine Reihe von Benachrichtigungen gibt, die von einer externen API abgerufen werden. Ich möchte, dass diese Benachrichtigungen auch an den Client gesendet werden. Es kann mühsam sein, diese Benachrichtigungen für alle Benutzer zu erhalten. Also habe ich gelernt, ich werde die externe API von der Service-Arbeiter für neue Benachrichtigungen abfragen und informieren Sie meinen Server und dann diese Benachrichtigungen von meinem Server. Ist das möglich? – Stanly

+0

Innerhalb des Push-Ereignishandlers eines Service-Mitarbeiters können Sie 'fetch' verwenden, um zusätzliche API-Aufrufe durchzuführen und detaillierte Daten über die spezifischen Benachrichtigungen zu erhalten, die Sie anzeigen. So kann der "Push" die SW "aufwecken", und dann kann die SW jede Logik verwenden, um Benachrichtigungen anzuzeigen. Die einzige Einschränkung ist, dass Sie normalerweise mindestens eine Benachrichtigung anzeigen müssen, wenn Sie ein Push-Ereignis behandeln. Https://developers.google.com/web/updates/2017/06/budget-api ändert das jedoch ein wenig . –