Como criar notificações Push – JavaScript


Eu estava desenvolvendo um projeto de uma aplicação e queria que cada vez que um usuário tivesse uma venda nova ele recebesse uma notificação, mas eu nunca tinha utilizado esse sistema de notificações dos browser, fui pesquisar e não achei quase nada que falasse sobre isso, então hoje vim aqui para mudar esse cenário e mostrar como criar essas notificações… XD.

Por mais que eu tenha sofrido pra descobrir como utilizar as notificações, é muito simples.

Iremos usar a Notification API, nesse post irei mostrar só as funções necessárias para abrir a solicitação de permissão e para “spawnar” notificações, vamos lá então.

Permissão de Notificações

Normalmente quando estamos usando uma rede social aparece um aviso mostrando que você pode receber notificações, no https://web.whatsapp.com/ aparece assim:

Então quando clicamos em “Ativar notificações na área de trabalho”, aparece um popup pedindo para você permitir que notificações sejam enviadas:

Para obtermos o status de permissão, nós podemos usar a função Notification.permission essa função retorna uma string desta forma:

granted: Quer dizer que o usuário permitiu que o sistema envie notificações para ele

denied: Significa que o usuário informou que não deseja receber notificações do sistema.

default: Quando o browser não sabe qual a decisão do usuário.

Quando o status é default, o browser trata como se o status fosse denied e o usuário não recebe notificações, caso usuário bloqueie as notificações ele não receberá mais nem o pedido de permissão até que ele entre nas configurações do browser e mude para granted ou default.

Agora que sabemos como funcionam os status de permissão, podemos criar um botão que só aparece na tela caso o status seja default.

HTML

<button type="button" id="btn_permission">Permission</button>

JavaScript

var btnPermission = document.getElementById("btn_permission");

if (Notification.permission !== "default") {
    btnPermission.style.display = "none";
} else {
    btnPermission.style.display = "inline-block";
}

Agora criaremos um evento para requisitar a permissão do usuário.

btnPermission.onclick = evt => {
    Notification.requestPermission();
}

 

Gerando Notificações

Criar as notificações e enviar é ainda mais fácil do que requisitar a permissão do usuário, utilizaremos o construtor Notification(), ele espera dois parâmetros, um título e um objeto de opções, também poderemos adicionar um evento na nossa notificação.

Agora vamos criar uma função chamada spawnNotification e receber por parâmetro um objeto de opções.

function spawnNotification(opcoes) {
}

Agora vamos criar uma variável instanciando o construtor Notification e passando algumas opções que receberemos por parâmetro.

function spawnNotification(opcoes) {
    var n = new Notification(opcoes.title, opcoes.opt);
}

Faremos uma condicional para o caso de não existir um link, se não existir um link de destino não terá sentido adicionarmos um evento na nossa notificação, a não ser que você queria adicionar um evento para outro propósito.

Para o evento usaremos as funções Notification.close(), window.focus() e window.location.href, para fechar a notificação, focar a aba do nosso site e redirecionar para o link que desejamos.

function spawnNotification(opcoes) {
    var n = new Notification(opcoes.title, opcoes.opt);
    
    if (opcoes.link !== '') {
        n.addEventListener("click", function() {               
            n.close();
            window.focus();
            window.location.href = opcoes.link;
        });
    }
}

Agora iremos criar um botão apenas para demonstrar o Spawn das notificações, ficará assim:

HTML

<button type="button" id="btn_push">Push Notification</button>

JavaScript

Criamos um evento e chamamos a nossa função.

document.getElementById("btn_push").onclick = evt => {
    spawnNotification()
}

Agora teremos que passar por parâmetro um objeto de opções, nesse objeto nos reuniremos todas as informações que iremos usar na nossa instancia de Notification(). O construtor em si, pede dois parâmetros, um título e um objeto de opções, esse objeto de opções pode ter diversos atributos, mas nós usaremos só dois para esse exemplo, o nosso evento pede um link então passaremos o link também nesse objeto, ficará assim.

{
    opt: {
        body: "Criando nova notificação",
        icon: "notification-flat.png"
    },
    title: "Olá mundo!",
    link: "https://www.google.com.br/"
}

Em “opt” nós temos o atributo “body” que é o texto que aparece no corpo da notificação, será uma breve descrição do que você quer notificar o usuário, temos também o atributo “icon” que é a foto que aparece na notificação.

Com isso feito é só passar por parâmetro na nossa função e está pronto

document.getElementById("btn_push").onclick = evt => {
    spawnNotification({
        opt: {
            body: "Criando nova notificação",
            icon: "notification-flat.png"
        },
        title: "Olá mundo!",
        link: "https://www.google.com.br/"
    })
}

E está pronto, quando clicamos no botão, aparece a nossa notificação.

Uma resposta para “Como criar notificações Push – JavaScript”

Deixe um comentário