28 votos

¿Cómo funcionan las notificaciones push?

Me pregunto cómo funciona el sistema de notificaciones push.

¿Hay una conexión TCP/IP activa que se ejecuta en segundo plano a los servidores de Google?

1 votos

Ver Wikipedia -- que hay que reconocer que es un poco difícil de leer. Básicamente, y puesto en palabras fáciles: El cliente se conecta al servidor y pide que se le informe -- y la respuesta llega "en diferido" cuando hay información disponible (o nunca si no la hay), a lo que sigue una nueva petición. Así que sí, esto requiere una conexión TCP/IP en segundo plano permanente mordisqueando su batería.

0 votos

@Izzy eso no puede ser correcto, porque (1) los docs dicen que se crea un Intent cuando llega el mensaje, y (2) ¿qué ejecutando en Android puede mantener una conexión abierta que Android nunca puede matar?

0 votos

@Michael ¿Qué documentos? No soy programador de Android para entender la profundidad de la misma (y esto no es un foro de discusión), así que probablemente no pueda discutir contigo aquí. He oído que oyentes (para las emisiones) puede establecerse dinámicamente - pero nunca he oído eso de intents (En mi opinión, tienen que ser declarado en el Manifest ). Podría imaginar que algún servicio de Google hiciera el "trabajo real", y que la aplicación se limitara a registrar un "receptor". La descripción anterior era más "general", no específica de Android, y traté de mantenerla simple ;)

31voto

Andy Brudtkuhl Puntos 1714

Sí, Android mantiene una conexión activa con los servidores de Google, pero no utiliza mucha energía ni datos, porque no se envía tráfico a través de ella hasta que algo envía un mensaje GCM a una aplicación del teléfono. Sólo hay una conexión en el teléfono, utilizada por todas las aplicaciones: instalar una nueva aplicación que utilice GCM no añade ninguna carga adicional.

El primer paso en GCM es que un servidor de terceros (como un servidor de correo electrónico) envía una solicitud al servidor GCM de Google. Este servidor envía entonces el mensaje a tu dispositivo, a través de esa conexión abierta. El sistema Android examina el mensaje para determinar a qué aplicación se refiere e inicia esa aplicación. La aplicación debe haberse registrado en Android para utilizar GCM y debe tener el permiso correspondiente. Cuando la aplicación se inicia, puede crear una notificación inmediatamente con los datos del mensaje. Los mensajes de GCM tienen un tamaño muy limitado, por lo que la aplicación podría abrir una conexión normal con el servidor de terceros para obtener más información (por ejemplo, descargando las cabeceras de los nuevos correos electrónicos).

La ventaja de utilizar las notificaciones push es que las aplicaciones no tienen que ejecutarse a intervalos regulares para comprobar si hay nuevos datos, lo que ahorra tanto energía como datos. La ventaja de contar con un mecanismo centralizado como GCM es que el dispositivo solo necesita una conexión de red abierta y el sistema GCM de Android es lo único que tiene que seguir funcionando, en lugar de que cada aplicación tenga que permanecer ejecutándose en segundo plano para mantener su propia conexión de red con su propio servidor.

1 votos

Sólo añadiría un comentario: Los mensajes GCM pueden tener un tamaño de 4KByte, por lo que no están tan limitados. developer.Android.com/google/gcm/gcm.html

0 votos

¿Qué es lo que mantiene abierta esta conexión? Cualquier actividad o servicio de Android puede ser eliminado en cualquier momento.

1 votos

Gracias por la información. Según mi pregunta (URL de la conexión desde el dispositivo a los servidores de GCM que se abre y utiliza para los datos de notificación)

6voto

Pieter Breed Puntos 2288

El sistema operativo Android utiliza ahora GCM (Google Cloud Messaging) para las notificaciones push. Usted puede tener una mejor idea aquí le dará una visión general de la arquitectura del servicio de notificaciones push completo con su ciclo de vida.

Espero que sea de ayuda.

0 votos

¿Hay alguna manera de hacer algo similar sin tener que depender de los servidores de Google?

0 votos

@Michael ¿Utilizando los servicios de Amazon Cloud? Parece que tienen un concepto comparable. Pero para el "cómo", este es el lugar equivocado ;)

2voto

Ajay Deepak Puntos 111

Respuesta tardía a una pregunta antigua, pero vale la pena ponerla.

GCM fue obsoleto el pasado mes de abril de 2018 y google ha recomendado utilizar FCM en su lugar, que es similar a GCM.

  1. no necesitamos escribir nuestra propia lógica de registro o reintento de suscripción
  2. Puedes utilizar Firebase Notifications, una solución de notificaciones sin servidor con una consola web que permite a cualquier persona enviar notificaciones para dirigirse a audiencias específicas en función de los datos de Firebase Analytics.
  3. Cuenta con la infraestructura básica de GCM.
  4. Un solo mensaje puede transferir una carga útil de hasta 4KB a una aplicación cliente.

1 votos

Desde el punto de vista de la aplicación, el FCM no es similar al GCM, sino que es idéntico. FCM es sólo el nuevo nombre de GCM.

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