Como agora FINALMENTE temos notificações push em PWAs do iOS
Eu estava investigando o atraso que é aplicado antes que uma notificação push seja enviada - porque parecia demorar mais do que o esperado.
O código verifica se um usuário esteve online recentemente (há menos de push_notification_time_window_mins minutos) e, se esteve, a notificação é atrasada em push_notification_time_window_mins.
if user.seen_since?(SiteSetting.push_notification_time_window_mins.minutes.ago)
Jobs.enqueue_in(
SiteSetting.push_notification_time_window_mins.minutes,
...
)
else
Jobs.enqueue(:send_push_notification, user_id: user.id, payload: payload)
end
Mas isso significa que, na prática, isso pode levar até o dobro do tempo esperado, já que o push_notification_time_window_mins é aplicado tanto na verificação de online quanto no atraso.
Exemplo:
push_notification_time_window_mins está definido como 10
13:00
Saio do site
13:10
Algo acontece que dispara uma notificação.
O código verifica se estive online há menos de 10 minutos.
Estive, então a notificação será enviada às 13:20.
12:59
Saio do site
13:10
Algo acontece que dispara uma notificação.
O código verifica se estive online há menos de 10 minutos.
Não estive, então a notificação será enviada imediatamente, às 13:10.
Portanto, uma diferença de um minuto no meu tempo online pode alterar a entrega da notificação em quase push_notification_time_window_mins. Especialmente se a configuração for alterada para um valor maior, isso pode fazer uma diferença significativa.
Eu esperaria que o atraso fosse push_notification_time_window_mins - (agora - seen_since)