A documentação oficial diz o seguinte sobre persistência de alarmes:
Os alarmes geralmente persistem até que uma extensão seja atualizada. No entanto, isso não é garantido, e os alarmes podem ser limpos quando o navegador é reiniciado. Consequentemente, considere definir um valor no armazenamento quando um alarme é criado e, em seguida, garanta que ele exista sempre que seu service worker for iniciado.
O que eu acho que está faltando é uma maneira de garantir que o trabalhador realmente inicie caso os alarmes sejam apagados. Existe um evento recomendado para o qual o trabalhador deve se registrar (além do evento de alarme) para garantir que ele seja iniciado para recriar o alarme?
Normalmente, os eventos onInstalled e onStartup (quando o navegador carrega seu perfil de usuário na inicialização) devem ser suficientes para verificar o alarme e recriá-lo, caso não haja nenhum.
A documentação sugere fazer isso toda vez que o service worker acorda, independentemente da causa, ou seja, apenas chamar
initAlarms()
em vez de usarchrome
eventos, o que não é uma má ideia neste caso, já que a verificação é simples.