Antwort

4

Dies ist eine Marotte in Chrome.

Wenn ein Benutzer eine Web-App zu seinem Startbildschirm mit "Standalone" in seinem Manifest hinzufügt, wenn der Benutzer auf das Web Apps-Symbol klickt, wird es ohne die URL-Leiste geöffnet.

Wenn eine Push-Nachricht empfangen wird und die gleiche Web-App geöffnet wird, wird die URL-Leiste nicht angezeigt, wenn der Benutzer die Web-App über das Startbildschirm-Symbol (aktuell in den letzten 10 Tagen) geöffnet hat. Wenn der Benutzer das Home-Symbol innerhalb dieses Zeitraums nicht verwendet hat, wird ein Benachrichtigungsklick mit der angezeigten URL-Leiste geöffnet.

Sehen Sie dieses Problem auf Chrome für weitere Informationen: https://bugs.chromium.org/p/chromium/issues/detail?id=541711

Im Einzelnen:

Der Web-App auf dem Startbildschirm hinzugefügt werden muß, in der Lage zu öffnen in Standalone-Modus und ist von der geöffnet Startbildschirm innerhalb der letzten zehn Tage. Wenn eine dieser Bedingungen nicht erfüllt ist, wird die Benachrichtigung auf das vorhandene Verhalten zurückgesetzt.

Es ist auch erwähnenswert, dass PWA vs Browser selbst nicht die richtige Art ist, darüber nachzudenken. Sie starten immer im Browser, nur in verschiedenen Modi, zum Beispiel "Standalone" vs "Browser".

PWA (Progressive Web Apps) ist in erster Linie ein Begriff für die Verwendung einer Reihe von APIs, um eine gute Benutzererfahrung mit neuen Webtechnologien (d. H. Service-Mitarbeiter, Push-, Web-App-Manifest usw.) zu machen.

+0

Ich habe die App erfolgreich auf dem Startbildschirm hinzugefügt und die App vom Startbildschirm aus gestartet. Der Push-Benachrichtigungsklick wird jedoch immer im Browsermodus geöffnet. irgendwelche Gedanken oder Vorschläge? – jasan

+0

Ich kann nur an die Chrome-Version denken und ich nehme an, Sie haben Standalone in Ihrem Web-App-Manifest festgelegt? –

1

von Jake Archibalds emojoy Demo Genommen:

self.addEventListener('notificationclick', event => { 
    const rootUrl = new URL('/', location).href; 
    event.notification.close(); 
    // Enumerate windows, and call window.focus(), or open a new one. 
    event.waitUntil(
     clients.matchAll().then(matchedClients => { 
     for (let client of matchedClients) { 
      if (client.url === rootUrl) { 
      return client.focus(); 
      } 
     } 
     return clients.openWindow("/"); 
     }) 
    ); 
}); 
+0

danke, ich habe gerade die App ausprobiert. Ich erhalte zwei Benachrichtigungen für jede neue Nachricht, eine Nachricht, die die Nachricht enthält, die andere, die angibt, dass die Site im Hintergrund aktualisiert wurde. – jasan

+0

Ich erhalte eine einzige Benachrichtigung "Neuer Chat erhalten" und klicke darauf, um die PWA zu öffnen, die ich beim Hinzufügen zum Homescreen installiert hatte. Beachten Sie, dass wenn Sie die Registerkarte Chrom geöffnet haben, wird es die Registerkarte konzentrieren. –

+1

Wenn Sie die "Website wurde im Hintergrund aktualisiert" erhalten, bedeutet dies, dass ein Fehler im Ereigniscode "push" vorliegt, d. H. Sie haben keine Benachrichtigung angezeigt, bevor die an event.waitUntil übergebene Zusage aufgelöst wurde. –