Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

107
Views
La sincronización en segundo plano del período no se activa después de registrarse correctamente

Estoy tratando de hacer una sincronización de bg periódica donde el trabajador del servicio actualiza la insignia. Cuando ejecuto mi página y la pruebo a través de Chrome DevTools, el trabajador del servicio procesa la solicitud. Pero cuando la página está cerrada, no hace nada. Lo mismo en el teléfono móvil.

En mi página (esta parte funciona y la salida en la consola es periodic update set ):

 navigator.permissions.query({name:'periodic-background-sync'}).then(function(result) { if (result.state === 'granted') { console.log('periodic background granted'); navigator.serviceWorker.ready.then(function(registration){ if ('periodicSync' in registration) { try { registration.periodicSync.register('update-badge', { minInterval: 60 * 60 * 1000, }).then(function(ret){ console.log('periodic update set'); }); } catch (error) { console.log('Periodic background sync cannot be used.'); } } }); } });

Trabajador del servicio:

 async function updateBadge() { const unreadCount = 5; //fixed value for testing navigator.setAppBadge(unreadCount).catch((error) => { console.log('Error setting badge.'); }); } self.addEventListener('periodicsync', (event) => { if (event.tag === 'update-badge') { event.waitUntil(updateBadge()); } });

Entonces, cuando disparo manualmente la sincronización en segundo plano desde DevTools, la insignia se configura, pero no automáticamente en segundo plano como pensé que funcionaría.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

El intervalo específico en el que se activa el evento de sincronización periodicsync varía; lo que he visto en, por ejemplo, las aplicaciones web de Android instaladas es que obtendrá una sincronización periodicsync una vez al día. Puede ser diferente en las plataformas de escritorio (y solo sucederá si su navegador se está ejecutando en ese momento).

¿Ha esperado un día completo más o menos después de instalar su PWA y ver si se dispara?

about 4 years ago · Juan Pablo Isaza Report

0

No puedo encontrar nada malo con el código. He visto variantes en las que solicita sincronización de fondo periódica después de navigator.serviceWorker.ready, pero creo que ambas funcionan (especialmente porque puede activar el evento registrado manualmente).

Creo que el problema es que no todas las condiciones para que se active la sincronización periódica en segundo plano son ciertas. Estas son las condiciones de la implementación inicial en Chrome (2019):

  • Chrome versión 80 o posterior
  • El PWA necesita ser instalado
  • El sitio web debe tener una puntuación de compromiso (se puede ver aquí chrome://site-engagement/ ). Los sitios web con 0 participación se eliminan de la lista y no activarán el evento de sincronización periódica, incluso si está instalado. Una vez que un usuario no ha interactuado con un sitio web durante 2 horas, sus niveles de participación comienzan a decaer. Con una participación mínima, se activará un evento de sincronización periódica en un intervalo de 36 horas. fuente

En su caso, creo que su código es correcto y funciona, pero no ha interactuado lo suficiente con su aplicación de forma continua durante 36 horas, por lo que se purga el compromiso y se cancela el temporizador de sincronización periódica (si ha instalado su PWA).

Para el registro, aquí hay una demostración de trabajo completa (registro de eventos) (y código sw ).

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!