google chrome - studio - Notificación de Chrome Push: este sitio se ha actualizado en segundo plano
notificaciones en segundo plano android studio (3)
Al implementar la notificación push de Chrome, estábamos obteniendo el último cambio de nuestro servidor. Mientras lo hace, el trabajador del servicio muestra una notificación adicional con el mensaje
Este sitio ha sido actualizado en segundo plano
Ya lo intenté con la sugerencia publicada aquí https://disqus.com/home/discussion/html5rocks/push_notifications_on_the_open_web/
Pero no pude encontrar nada útil hasta ahora. Hay alguna sugerencia?
En general, tan pronto como reciba un mensaje de inserción de GCM (Google Cloud Messaging), debe mostrar una notificación de inserción en el navegador. Esto se menciona en el 3er punto aquí:
Por lo tanto, puede ocurrir que de alguna manera se salte la notificación de inserción aunque recibió un mensaje de inserción de GCM y recibirá una notificación automática con un mensaje predeterminado como "Este sitio se ha actualizado en segundo plano".
Estaba exprimiendo el mismo problema, pero después de una larga investigación, llegué a saber que esto se debe a que el retraso ocurre entre el evento PUSH y self.registration.showNotification (). Solo me perdí la palabra clave return antes de self.registration.showNotification ()
Por lo tanto, debe implementar la siguiente estructura de código para recibir notificaciones:
var APILINK = "https://xxxx.com";
self.addEventListener(''push'', function(event) {
event.waitUntil(
fetch(APILINK).then(function(response) {
return response.json().then(function(data) {
console.log(data);
var title = data.title;
var body = data.message;
var icon = data.image;
var tag = ''temp-tag'';
var urlOpen = data.URL;
return self.registration.showNotification(title, {
body: body,
icon: icon,
tag: tag
})
});
})
);
});
Me he encontrado con este problema en el pasado. En mi experiencia, la causa es generalmente una de tres cuestiones:
- No muestra una notificación en respuesta al mensaje de inserción. Cada vez que recibe un mensaje de inserción en el dispositivo, cuando termina de manejar el evento, debe dejarse una notificación visible en el dispositivo. Esto se debe a la suscripción con la opción
userVisibleOnly: true
(aunque tenga en cuenta que esto no es opcional, y al no establecerlo, la suscripción fallará). - No está llamando a
event.waitUntil()
en respuesta al manejo del evento. Se debe pasar una promesa a esta función para indicar al navegador que debe esperar a que se cumpla la promesa antes de verificar si se deja una notificación. - Por algún motivo, está resolviendo la promesa pasada al
event.waitUntil
se haya mostrado una notificación. Tenga en cuenta queself.registration.showNotification
es una promesa y unaself.registration.showNotification
lo que debe asegurarse de que se haya resuelto antes de que la promesa pase aevent.waitUntil
.