Puede usar notificaciones push remotas para configurar o borrar la insignia en una aplicación iOS. En general, deberá abordar estos aspectos:
- Cada dispositivo en el que se usa la aplicación debe registrarse para recibir notificaciones push de “distintivos” remotas (el sonido y la alerta no son necesarios a menos que los necesite para otros fines),
- El token de inserción de la aplicación debe enviarse a su servidor y asociarse con la cuenta de usuario adecuada,
- Cuando el recuento de notificaciones cambia a través de la acción del servidor o la acción en un cliente, se debe enviar un envío con el recuento de credenciales actualizado a todos los demás clientes asociados con esa cuenta de usuario.
Mencionas el desafío de escalar las notificaciones. Si bien podría diseñar un sistema para enviar el número de credencial modificado de forma síncrona o en cada evento, sugeriría una tarea programada en el servidor que se ejecuta cada X número de segundos o minutos que empuja el conteo actual de cada usuario que ha cambiado desde el último hito.
Como ejemplo de implementación, una tabla de base de datos podría tener:
- ID de la cuenta
- recuento actual
- última marca de tiempo de notificación
- marca de tiempo de cambio de último recuento
Escribiría un proceso simple para seleccionar todas las filas donde la marca de tiempo de notificación> cambiar la marca de tiempo, enviar notificaciones a los dispositivos afectados y actualizar las marcas de tiempo de notificación efectuadas. Una cosa a tener en cuenta es que esto puede conducir a condiciones de carrera donde el proceso de notificación tira una fila y antes de establecer la marca de tiempo de cambio se aplica un nuevo recuento. Debe usar un bloqueo exclusivo a nivel de tabla mientras ejecuta el proceso de notificación (que no escalará bien) o generar una sola marca de tiempo al comienzo de la ejecución de la notificación y aplicar esa marca de tiempo almacenada al actualizar la base de datos.
- ¿Te irías de Nueva York y te mudarías a Washington, DC, por un trabajo tecnológico similar bien pagado?
- ¿Qué rastreador de tareas usan las grandes compañías de software?
- ¿Cómo memorizar todo el patrón de diseño? ¿Cómo puedes entender el patrón de diseño del proyecto de código abierto de alguien?
- ¿Cuál es la mejor tecnología / lenguaje de desarrollo de software para especializarse que paga realmente bien?
- ¿Qué es la prueba DevOps?
Otra solución sería programar el envío de actualizaciones para X segundos en el futuro y volver a programar el envío pendiente cuando se aplique una nueva actualización a la cuenta. Esto parece más elegante y aislado por cuenta, pero no creo que escale también.
En términos de entrega push sin formato, la cola push puede ser muy, muy rápida si tiene la infraestructura adecuada. Puede considerar usar Urban Airship o algo similar si esto le preocupa.