No elimines todas las suscripciones push al cerrar sesión

También parece que cuando un usuario cierra sesión, todas las suscripciones de notificaciones push se eliminan. Por lo tanto, si un usuario está conectado en varios dispositivos (móvil, navegador, tableta) y cierra sesión en uno de ellos, se impide que los demás dispositivos reciban notificaciones, ya que sus suscripciones push han sido eliminadas.

Menciono esto porque está relacionado con saber qué suscripción debe reemplazarse durante la renovación y cuál debe eliminarse al cerrar sesión.

6 Me gusta

Bueno, hoy me cerré la sesión de Meta y, tras volver a iniciarla, recibí una notificación push de tu publicación… A menos que solo ocurra en el flujo de inicio de sesión iniciado por el usuario :thinking:

6 Me gusta

Cuando un usuario vuelve al foro (o inicia sesión), las suscripciones de push del navegador se envían de nuevo y se vuelven a crear. Pero si cerraste sesión, se eliminan y no se entregarán notificaciones push hasta que ese usuario acceda al foro desde ese dispositivo.

Esto no contradice lo que mencionaste, ya que parece que indicas que recibiste la notificación push después de iniciar sesión.

Referencia de código:

6 Me gusta

Ah, así que esto es exactamente lo que sospechaba.

¡Buen hallazgo! ¡Definitivamente tenemos que arreglar esto!

El problema es que actualmente no almacenamos para qué dispositivo existe una suscripción específica…

8 Me gusta

La API de Push sí tiene una función unsubscribe para invalidar la suscripción de notificaciones push:

Al cerrar sesión, podríamos invocar esto (en el lado del cliente), lo que haría que la suscripción en el servidor se considere inválida sin afectar a ninguna otra suscripción.

De hecho, el cliente ya tiene una función unsubscribePushNotification que realiza esta acción en las preferencias de “Notificaciones en vivo”. Quizás la solución sea invocar esto al cerrar sesión en el lado del cliente si las Notificaciones en vivo están habilitadas. Probablemente sea una buena práctica revocar las claves de suscripción en el lado del cliente en lugar de simplemente eliminarlas del servidor.

2 Me gusta

Así que la solución puede constar de dos partes:

  1. Eliminar el código de limpieza del lado del servidor
  2. Agregar nuevo código para cancelar la suscripción en el lado del cliente.
5 Me gusta

Realizado en

https://meta.discourse.org/t/ios-android-push-notifications-on-self-hosted-discourse-docker/394149/18?u=falco

1 me gusta

Este tema se cerró automáticamente después de 4 días. Ya no se permiten nuevas respuestas.