Ich habe in den letzten Stunden über die Push-Benachrichtigungs-API und die Web-Benachrichtigungs-API gelesen . Ich habe auch festgestellt, dass Google und Apple einen kostenlosen Push-Benachrichtigungsdienst über GCM bzw. APNS anbieten.
Ich versuche zu verstehen, ob wir Push-Benachrichtigungen für Browser mithilfe der Desktop-Benachrichtigung implementieren können. Ich glaube, das ist die Funktion der Web-Benachrichtigungs-API. Ich habe hier und hier eine Google-Dokumentation darüber gesehen, wie dies für Chrome gemacht werden kann .
Was ich jetzt noch nicht verstehen kann, ist:
- Können wir GCM / APNS verwenden, um Push-Benachrichtigungen an alle Webbrowser einschließlich Firefox & Safari zu senden?
- Wenn nicht über GCM, können wir dann unser eigenes Back-End haben, um dasselbe zu tun?
Ich glaube, all diese Antworten in einer Antwort können vielen Menschen helfen, die ähnliche Verwirrungen haben.
Antworten:
Hier beantworte ich meine eigene Frage. Ich habe Antworten auf alle meine Fragen von Personen erhalten, die in der Vergangenheit Push-Benachrichtigungsdienste eingerichtet haben.
Antwort auf die ursprünglichen Fragen, die vor 3 Jahren gestellt wurden:
Antwort: Google hat GCM ab April 2018 abgelehnt. Sie können jetzt Firebase Cloud Messaging (FCM) verwenden. Dies unterstützt alle Plattformen einschließlich Webbrowsern.
Antwort: Ja, Push-Benachrichtigungen können von unserem eigenen Back-End gesendet werden. Dies wird von allen gängigen Browsern unterstützt.
Überprüfen Sie dieses Codelab von Google, um die Implementierung besser zu verstehen.
Einige Tutorials:
Implementierung eines eigenen Backends in verschiedenen Programmiersprachen:
Weitere Lesungen: - - Die Dokumentation von der Firefox-Website kann hier gelesen werden . - Eine sehr gute Übersicht über Web Push von Google finden Sie hier. - Eine FAQ zur Beantwortung der häufigsten Verwirrungen und Fragen.
Gibt es kostenlose Dienste, um dasselbe zu tun? Es gibt einige Unternehmen, die eine ähnliche Lösung für kostenlose, Freemium- und kostenpflichtige Modelle anbieten. Ich liste unten einige auf:
Hinweis: Denken Sie bei der Auswahl eines kostenlosen Dienstes daran, die Nutzungsbedingungen zu lesen. Kostenlose Dienste erfassen häufig Benutzerdaten für verschiedene Zwecke, einschließlich Analysen.
Abgesehen davon benötigen Sie HTTPS, um Push-Benachrichtigungen zu senden. Sie können https jedoch frei über letsencrypt.org erhalten
quelle
onesignal
, nette Info: 3Javier behandelte Benachrichtigungen und aktuelle Einschränkungen.
Mein Vorschlag:
window.postMessage
Während wir darauf warten, dass der behinderte Browser aufholt, arbeiten wirWorker.postMessage()
weiterhin mit Web Workern.Dies kann die Fallback-Option mit dem Handler für die Anzeige von Dialogfeldnachrichten sein, wenn ein Test der Benachrichtigungsfunktion fehlschlägt oder die Berechtigung verweigert wird.
Überprüfung der Benachrichtigungsfunktion und Verweigerung der Berechtigung:
quelle
Sie können Daten vom Server über serverseitige Ereignisse an den Browser senden . Dies ist im Wesentlichen ein unidirektionaler Stream, den ein Client über einen Browser "abonnieren" kann. Von hier aus können Sie einfach neue
Notification
Objekte erstellen , während SSEs in den Browser streamen:Ein bisschen alt, aber dieser Artikel von Eric Bidelman erklärt die Grundlagen von SSE und enthält auch einige Beispiele für Servercode .
quelle
GCM / APNS gelten nur für Chrome bzw. Safari.
Ich denke, Sie suchen vielleicht
Notification
:https://developer.mozilla.org/en-US/docs/Web/API/notification
Es funktioniert in Chrome, Firefox, Opera und Safari .
quelle
Ich gehe davon aus, dass es sich um echte Push-Benachrichtigungen handelt, die auch dann zugestellt werden können, wenn der Benutzer nicht auf Ihrer Website surft (andernfalls sollten Sie sich WebSockets oder ältere Methoden wie lange Abfragen ansehen).
GCM ist nur für Chrome und APNs nur für Safari. Jeder Browserhersteller bietet seinen eigenen Service an.
Die Push-API benötigt zwei Backends ! Eine wird vom Browserhersteller angeboten und ist für die Zustellung der Benachrichtigung an das Gerät verantwortlich. Der andere sollte Ihnen gehören (oder Sie können einen Drittanbieter-Dienst wie Pushpad verwenden ) und ist für das Auslösen der Benachrichtigung und die Kontaktaufnahme mit dem Dienst des Browserherstellers (z. B. GCM, APNs, Mozilla-Push-Server ) verantwortlich.
Offenlegung: Ich bin der Pushpad-Gründer
quelle
Dies ist eine einfache Möglichkeit, Push-Benachrichtigungen für alle Browser https://pushjs.org durchzuführen
quelle
Darf ich Ihre Frage wie folgt neu definieren?
Ja. Bis heute (2017/05) können Sie dieselbe clientseitige und serverseitige Implementierung für Chrome, Firefox und Opera verwenden (keine Safari). Weil sie Web-Push-Benachrichtigungen auf die gleiche Weise implementiert haben. Das ist das Push-API- Protokoll von W3C. Aber Safari hat seine eigene alte Architektur. Wir müssen Safari also separat warten.
Im Browser-Push- Repo finden Sie Richtlinien zum Implementieren der Web-Push-Benachrichtigung für Ihre Web-App mit Ihrem eigenen Back-End. Anhand von Beispielen wird erläutert, wie Sie die Unterstützung für Web-Push-Benachrichtigungen für Ihre Webanwendung ohne Dienste von Drittanbietern hinzufügen können.
quelle
Ab sofort funktioniert GCM nur noch für Chrome und Android. Ebenso haben Firefox und andere Browser ihre eigene API.
Kommen wir nun zu der Frage, wie Push-Benachrichtigungen implementiert werden, damit sie für alle gängigen Browser mit eigenem Back-End funktionieren.
2. Nachdem Sie den Endpunkt mit Ajax erhalten haben, speichern Sie ihn zusammen mit dem Browsernamen.
3. Sie müssen ein Back-End erstellen, das Felder für Titel, Nachricht, Symbol und URL gemäß Ihren Anforderungen enthält. Rufen Sie nun nach dem Klicken auf Benachrichtigung senden eine Funktion wie send_push () auf. In diesem Code schreiben Sie zum Beispiel für verschiedene Browser
3.1. für Chrom
3.2. für Mozilla
für andere Browser bitte googeln ...
quelle
Ich schlage vor, Pubnub zu verwenden. Ich habe versucht, ServiceWorkers und PushNotification über den Browser zu verwenden, aber als ich es versuchte, haben Webviews dies nicht unterstützt.
https://www.pubnub.com/docs/web-javascript/pubnub-javascript-sdk
quelle