2017-07-20 18 views
1

Ich baue ein PWA mit der neuesten Version von Angular.Android lokale Benachrichtigung mit Angular Service Worker

Ich benutze die Angular Mobile Toolkit und ich möchte lokale Benachrichtigungen senden mit angular/service-worker. Aber ich kann es nicht funktionieren lassen.

Ich bin in der Lage zu abonnieren und Benachrichtigungen von einem Server zu senden, aber ich möchte eine Benachrichtigung von meiner App selbst senden. Ich habe versucht, angular2-notifications verwenden, es funktioniert gut auf einem Desktop, aber der Konstruktor

new Notification(title, options) 

aus der Notification API funktioniert nicht mehr auf Android, so dass es nichts für mich.

Gibt es eine Möglichkeit angular/service-worker zu verwenden, um lokale Benachrichtigungen auf Android (Chrome) zu senden? Oder vielleicht eine andere Alternative.

EDIT

Maciej Antwort auf die richtige Richtung wies mich an, ich konnte es

navigator.serviceWorker.getRegistration() 
     .then((reg) => { 
       reg.showNotification(title, noti); 
      }); 

PS mit dem folgenden Stück Code funktioniert: Beachten Sie, dass ich diese verwendet zusammen mit angular/service-worker. Ich habe angular/service-worker verwendet, um den Service-Mitarbeiter zu registrieren, und der obige Code verwendet den registrierten Service-Mitarbeiter. Beachten Sie außerdem, dass für den Service-Mitarbeiter eine sichere Verbindung erforderlich ist.

Antwort

1

Chrome für Android ist nicht mit der Benachrichtigungs-API von HTML5 kompatibel, daher können Sie keine local notifications senden.

Soweit ich in dem @angular/service-worker Quellcode für die Anzeige von Benachrichtigungen sehen kann, sind sie mit folgenden Methode:

this.worker.showNotification(desc['title'], options);

this.worker ist ein Objekt vom Typ VersionWorker.

Also wahrscheinlich gibt es eine Möglichkeit, this.worker für Ihre Verwendung wieder zu verwenden.

Voll Code von Push-Plugin von Angular Team geschrieben, ist hier zu finden: https://github.com/angular/mobile-toolkit/blob/master/service-worker/worker/src/plugins/push/index.ts kann

Beispiel Repo für Servicemitarbeiter Plugin hier: https://github.com/maciejtreder/ng-http-sw-proxy (Katalog plugin).

+0

Hallo Maciej, danke für deine Antwort. Mir ist bekannt, dass Chrome unter Android nicht mit der Benachrichtigungs-API kompatibel ist. Aber ich kann die Service Worker API verwenden (in meinem Fall verwende ich [angular/service-worker] (https://github.com/angular/mobile-toolkit/tree/master/service-worker/worker)) um Benachrichtigungen von einem Server zu abonnieren. Ich frage mich, ob ich die gleiche API verwenden kann, um lokale Benachrichtigungen zu senden –

+0

Sie haben Recht. Ich habe meine Antwort aktualisiert. –

+0

Nochmal aktualisiert;) –