32 votos

¿Cómo es que las aplicaciones que no se ejecutan "en segundo plano" reciben notificaciones?

Así que, Android tiene esta vista (creo que a la izquierda del botón de inicio es estándar) donde se ven todas las aplicaciones "actualmente abiertas", lo que sea que eso signifique exactamente. Lo que me pregunto es cómo pueden recibir notificaciones las aplicaciones que no están entre las que se están "ejecutando" actualmente. Por ejemplo, Whatsapp, Reddit o el correo electrónico siguen enviando alertas incluso en un smartphone recién reiniciado en el que definitivamente no he iniciado la aplicación manualmente.

¿Cómo funciona exactamente? ¿Están, en cierto sentido, todas las aplicaciones instaladas funcionando en segundo plano todo el tiempo, y en intervalos regulares preguntando a su servidor de origen si ha habido una notificación? ¿La notificación se envía de alguna manera al propio sistema Android, que a su vez activa la aplicación solicitada a petición? Al menos en un PC yo esperaría que un programa tenga que estar ejecutándose para poder enviar las alertas, pero tal vez Android sea completamente diferente.

4 votos

2 votos

Cuando se instala una aplicación, posiblemente se instala algo más que la "aplicación" que se ve en la pantalla. Estas aplicaciones también pueden instalar servicios que se ejecutan en segundo plano, independientemente de que los veas en las "aplicaciones anteriores". Ten en cuenta también que esas "aplicaciones anteriores" no se están ejecutando realmente cuando las estás viendo en esa vista - están suspendidas, y sólo vuelven a la vida una vez que las traes al primer plano.

1 votos

Por ejemplo, una aplicación como Life 360 no tiene que abrirse nunca cuando se inicia el teléfono, pero de vez en cuando comprueba tu ubicación y la comunica al servidor en Internet. La aplicación Life360 en sí no se ejecuta, pero el servicio que instaló sí.

50voto

pr0nin Puntos 353

Las notificaciones de Whatsapp y Reddit se activan mediante notificaciones push enviadas desde los servidores de Google, recibidas por Google Play Services, una aplicación del sistema que siempre se ejecuta en segundo plano.

Dependiendo del tipo de notificación push recibida, dicha notificación puede mostrarse directamente sin ni siquiera iniciar la aplicación a la que va dirigida o el mensaje push se entrega a la aplicación (que se inicia automáticamente si no se está ejecutando) y la aplicación puede entonces "traducir" el mensaje push en una notificación (en el caso de Whatsapp esto requiere, por ejemplo, descifrar el mensaje recibido o incluso obtener datos adicionales de los servidores de Whatsapp).

0 votos

Muchas gracias, muy claro. Una pregunta sin embargo, eso no significa que TODOS los datos que llegan a mi teléfono corren por los servicios de Google, ¿no? (Pensando en, por ejemplo, los datos de las páginas de la navegación por la Wikipedia en la aplicación móvil de Firefox). Creo que sólo se refiere al tipo de notificación?

6 votos

@MaxD No, sólo las notificaciones push de Google son procesadas por Google Play Services. Las apps suelen recuperar directamente los datos de los servidores web. Pero incluso para las notificaciones push las apps pueden saltarse este servicio e implementar su propio sistema de mensajes push - por ejemplo Signal lo tiene como característica opcional o para dispositivos que no incluyen los servicios de Google (por ejemplo ROM personalizadas o dispositivos Huawei). Pero esto cuesta más datos de la batería.

2 votos

@MaxD Por si acaso te interesa buscar en Google más detalles, el sistema actual que maneja esto se llama Firebase y puede manejar dos tipos de mensajes: "notificación" (algo que se maneja directamente sin involucrar a la app, por lo que Google puede verlo también) y mensajes de "datos" entregados a una app para su posterior procesamiento. Muchas aplicaciones utilizan el cifrado para los mensajes de "datos", de modo que lo único que Google puede ver es que el servidor de una aplicación acaba de enviar algo, no lo que era.

13voto

rphair Puntos 33

Sé que ya hay una buena respuesta a esta pregunta, pero creo que también podría haber una respuesta técnica detallada.

Cuando instalas una nueva aplicación en tu teléfono que utiliza notificaciones push, y le das permiso para acceder a Internet, registra el interés en su sitio web del servicio push con el servicio de notificaciones push de Google en tu teléfono.

El servicio Google Push registrará entonces el interés por las actualizaciones con el servidor de notificaciones push de la aplicación a través de Web Sockets. Esto también ocurrirá automáticamente al encender el teléfono cuando se haya instalado la aplicación.

Cuando se produce una actualización, el mensaje pasa del servidor de notificaciones push al servicio Google Push. A continuación, se pasa a la aplicación interesada, que entonces se despierta si está dormida, o carga su código de monitorización push si no está cargado para cargar la notificación y notificarle el mensaje.

Cuando enciendas tu teléfono y registre el interés de todos a la vez, es posible que recibas una avalancha de notificaciones push. Se trata de todas las notificaciones desde la última vez que la aplicación notificó al servidor mientras las leías. Esto se hace de forma estándar en Web Sockets para ponerte al día en lo que dijiste que habías registrado interés.

Algunas aplicaciones pueden tener un servidor que envía un mensaje push genérico a la aplicación Google Push para que ésta despierte a la aplicación real, y entonces la aplicación real recupera el mensaje push real. No todos los servicios hacen esto. Esto se hace por seguridad y privacidad.

La razón por la que el servicio de notificaciones push de Google se utiliza como intermediario es simplemente por el hecho de que siempre está en funcionamiento, a diferencia de casi todas las demás aplicaciones de tu teléfono. Siempre estará ahí para recibir una notificación push. Si bien puedes eludirlo, podría significar que te pierdas las notificaciones si tu aplicación no se está ejecutando cuando llegan.

2 votos

¿Y si uno quiere utilizar un dispositivo sin Google?

0 votos

@irfan cada teléfono inteligente tiene su propia versión de estos servicios de Google play. Apple tiene la suya propia e incluso Google Firebase es capaz de dirigirse a las aplicaciones de iOS firebase.google.com/docs/cloud-messaging/ios/client

1 votos

@DeanMeehan Google Firebase en iOS sólo utiliza Apple push en segundo plano. Eso puede ser incluso enforceed por Apple.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X