¿Cómo reciben notificaciones WhatsApp o Gmail incluso después de forzar su cierre?

Bueno, en primer lugar, tienen compinches 😀

La mayoría de las aplicaciones en su teléfono vienen con cosas llamadas servicios . Estos se ejecutan en segundo plano incluso cuando la aplicación principal no se está ejecutando en primer plano o está cerrada. Estos servicios son responsables de verificar las actualizaciones que, cuando están disponibles, se transmiten a todas las aplicaciones que escuchan la actualización específica.

El desencadenante de la actualización puede ser diferente. El servidor en sí puede iniciar la sincronización o el servicio puede sondear constantemente las actualizaciones en el servidor. Pero la mayoría de las veces, el cliente estaría haciendo esto. En WhatsApp, un cliente (A) puede enviar un nuevo mensaje. El servidor recibe este mensaje y le permite al servicio del teléfono del destinatario (cliente B) saber que hay un nuevo mensaje.

Esto significa que incluso si la aplicación no se está ejecutando, el servicio de actualización puede despertarla cuando hay una actualización disponible. Pero estar cerrado por la fuerza es una cosa diferente. Estos compinches son poderosos, pero sucumben al cierre forzado. Este es el comportamiento preferido, porque el usuario fuerza manualmente el cierre de la aplicación, lo que indica que fue una decisión consciente. Él / Ella no quiere que la aplicación se actualice sola y quiere que permanezca muerta.

Como mencionó, forzar el cierre de su aplicación de notificación push detendrá el código que busca actualizaciones. Y como resultado, no publicará notificaciones sobre actualizaciones.

Para superar este problema, puede reiniciar la aplicación si por algún motivo la mata. En Android, implica la captura de excepciones que hacen que la fuerza se cierre a través de uncaughtExceptionHandler(){...} y luego reinicie la aplicación con algo como:


Toast.makeText (getContext (), “¡Vaya! ¡Algo salió mal!”, Toast.LENGTH_LONG) .show ();

Administrador de AlarmManager = (AlarmManager) getSystemService (Context.ALARM_SERVICE);
manager.set (AlarmManager.RTC, System.currentTimeMillis () + 5000, intento);

System.exit (1);

Al hacerlo, se reiniciará la aplicación junto con el servicio de actualización. Las notificaciones push ahora comenzarán a funcionar nuevamente.

Depende de qué teléfono estés usando. Como se mencionó en las otras respuestas, cuando la aplicación no se está ejecutando o no está funcionando, es deber del sistema operativo mostrarle notificaciones automáticas. Sin embargo, este no es el caso para dispositivos Android específicos como Xiaomi, Oppo, One Plus, Vivo, Lenovo, Huawei, Vivo y Samsung.

Estos fabricantes de dispositivos intentan personalizar sus ROM de stock para conservar la batería y mejorar el rendimiento. Lo hacen bloqueando las aplicaciones para que no ejecuten servicios en segundo plano, lo que a su vez evita las notificaciones push. Hay una página de configuración donde el usuario puede habilitar su aplicación, pero definitivamente es un problema para los desarrolladores de Android porque no se puede configurar mediante programación.

He escrito un artículo que explica por qué sucede esto y qué hicimos para solucionarlo. Puede leer sobre esto aquí: https://medium.freecodecamp.org/

Bueno, forzar el cierre de la aplicación no significa que no pueda recibir la notificación. Forzamos a cerrar la aplicación porque a veces se bloquea o tiene errores. Sin embargo, después de forzar el cierre de la aplicación, se vuelve a conectar automáticamente y comenzará a recibir las notificaciones push. Es un protocolo

Estas cosas suceden en el fondo. Si desea dejar de recibir notificaciones automáticas, deberá desinstalar o desactivar sus datos móviles.

Es desde el servidor de Gmail o WhatsApp hasta los APN (servicio de notificaciones push de Apple), luego los APN en su dispositivo iOS. La transacción no tiene nada que ver con su aplicación de Gmail. Lo que hace la aplicación en el proceso es registrar su dispositivo iOS y solicitar su permiso de notificación. Si dice que sí, la aplicación vincula el dispositivo actual a su cuenta de Gmail o WhatsApp.

Cuando se recibe un nuevo mensaje en el servidor, el servidor busca qué dispositivo está vinculado a su cuenta y le pide a los APN que le envíen una notificación automática. En su dispositivo, iOS hace el trabajo de “ding” a usted, no a la aplicación.

Como sugiere Will, cuando la aplicación no se está ejecutando o no está funcionando, es deber del sistema operativo mostrarle esta notificación automática. En caso de que su dispositivo reciba una notificación push con una carga útil JSON e incluso su aplicación no se esté ejecutando, el sistema operativo ejecuta la aplicación en segundo plano durante un tiempo y luego la aplicación obtiene estos datos. Entonces es tarea de la aplicación hacer lo que necesita para hacer con esta carga específica.

Es posible que estén utilizando la actualización en segundo plano y APNS para enviar datos (el campo ‘alerta’ vacío en la carga útil de inserción y ‘contenido disponible’ en 1 no mostrará una notificación visual, pero activará la aplicación con datos) y luego activará una notificación local si es necesario.

No lo complicaré, WhatsApp o Gmail usan la función VoIP usando el marco del kit de inserción para recibir notificaciones de inserción, cuando la activación de la aplicación de inserción viene en estado activo durante 30 segundos, incluso su aplicación está en estado de finalización o de fondo sin importar.

Obtén WhatsApp usando una nueva contraseña