Como posso fazer notificações push em uma aplicação web HTML5?

Tenho uma aplicação web. Eu quero usar a API de notificações inbuilt HTML 5 para fazer notificações push do servidor quando o usuário está em uma página particular. É possível?

Author: sideshowbarker, 2015-09-10

2 answers

Você pode fazer notificações de push reais com aplicações Web hoje no Chrome usando Os trabalhadores dos serviços e O 'PushManager' do W3C Push API.

Veja o artigo empurrar as notificações na web aberta para um excerto passo-a-passo de how-to e de código que possa usar. Aqui está um diagrama desse artigo que explica como a IU em torno dele se parece.

enter image description here

A implementação da API de Push já aterrou no Firefox também; é alvo de transporte marítimo em novembro de 2015 no Firefox 42. E a Microsoft indicou que a API Push também está em consideração para a implementação na Edge team.

Abaixo está um exemplo de código simples, emprestado do MDN.

this.onpush = function(event) {
  console.log(event.data);
}

navigator.serviceWorker.register('serviceworker.js').then(
    function(serviceWorkerRegistration) {
        serviceWorkerRegistration.pushManager.subscribe().then(
            function(pushSubscription) {
                console.log(pushSubscription.subscriptionId);
                console.log(pushSubscription.endpoint);
            }, function(error) {
                console.log(error);
            }
        );
    }
);
 18
Author: sideshowbarker, 2019-12-16 09:25:57

Depende do que queres alcançar:

  • Se quiser mostrar as notificações push ao utilizador enquanto está a navegar no seu website, poderá usar a API das notificações Web para dar à notificação um estilo "nativo"; Poderá também usar uma tecnologia como o SSE ou WebSockets para empurrar a notificação do seu servidor para o cliente
  • Se quiser notificações de push fora do local (que são entregues mesmo quando o utilizador não está no seu site) deve usar uma combinação de trabalhadores de serviços e pressione a API para despoletar o evento offline e use a API das notificações para mostrar a notificação (Ver a minha resposta)
 4
Author: collimarco, 2018-05-10 09:00:55