Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Intervalo de notificações

Pessoal, alguma sugestão de lógica para uma notificação que será enviada para o usuário de tempos em tempos? Por exemplo, to criando um app que o usuário terá a opção de setar um intervalo pra receber uma notificação fixa, se o user setar 2h a cada 2h ele receberá uma notificação. Minhá dúvida é em como implementar esse intervalo... Deverá ser feito com background sync? Ainda não consegui definir uma estratégia pra isso.

6 respostas

Oi João, tudo bem ?

Acho que ninguém conseguiu te dar um feedback aqui.

Sou desenvolvedor mobile nativo e lá as notificações geralmente são em background, mas quem cuida disso para gente é o google ou a apple, a gente solicita que ele dispare as notificações ele faz toda essa parte para gente.

Imagino que no seu caso você possa fazer a mesma coisa, tem um cara chamado Firebase, que também funciona para aplicações web, ele faz o envio de notificações.

Dá uma olhadinha e vê se ele te atende :

https://firebase.google.com/

Abraços

Valeu Matheus! Sim, minha dúvida era em como tratar essa lógica no service worker, mas na realidade acho que essa lógica fica no servidor e o worker apenas recebe esse push.

A ideia é você sempre ter o menos possível de lógica complexa no lado mobile e sempre deixar o server fazer esse serviço

Oi João,

Para mostrar uma notificação como se fosse nativa do Sistema Operacional você deve usar a Notifications API.

O que vc vai precisar decidir é quando o usuário vai ter acesso a essas notificações.

Se você quiser que a notificação só apareça quando o usuário estiver com o site aberto em qualquer aba do navegador, você pode simplesmente usar a API assim:

//esse interval vai rodar a cada 2 horas +/-
setInterval(function(){
   //código para lançar notificação com a Notifications API aqui
}, 7200000)

Agora se você quiser que seu site receba e dispare notificações mesmo quando ele não está aberto, você vai precisar usar a Notifications API junto com um Service Worker. Se ainda quiser que o conteúdo da notificação venha de algum serviço de cloud messging como o FCM, você vai precisar usar a Push API que funciona em conjunto com os Service Workers.

Abraços,

Artur

Fala Artur,

A lógica do setInterval que você mostrou está perfeita para o que quero fazer, no entanto eu quero essa mesma lógica com o push notification já que eu quero receber a mensagem mesmo com o app fechado. Como que seria esse fluxo ? Na aplicação o usuário tem como setar um intervalo de notificações, esse valor eu teria que enviar para o servidor e o servidor contar o tempo e voltar com um push pro meu service worker, daí eu mostro com a notification API a mensagem pro usuário? Seria esse o fluxo ou estou enganado? Na verdade se a notificação fosse apenas com o app aberto, o setinterval resolveria 100%, sacou?

Valeu!

solução!

Fala João,

Mesmo com um setInterval, o Service Worker pode ser pausado a qualquer momento pelo navegador. Quando o browser pausa o Service Worker, o setInterval pausa também. Por isso não podemos depender do setInterval dentro do Service Worker.

Oficialmente, a forma de receber infos do servidor mesmo com o site fechado é utilizando a Push API dentro do Service Worker.