¿Cómo funciona GCM? (Mensajería en la nube google para Android)

Tengo una aplicación para Android que me conecto a mi servidor utilizando REST API (framework de descanso django)

Aquí hay un escenario (y tal vez mi plan):

  • Los datos se envían hacia adelante y hacia atrás como json
  • Tengo un modelo del usuario y un modelo de la tarea donde los usuarios son dueños de una cierta tarea.
  • Los usuarios normalmente envían una tarea a otro usuario (con json similar a esto: {"owner": "exampleuser", "from": "otheruser", "content": "ejemplo" …} Tiene un campo booleano "completado" y se elimina una vez que se completa la tarea (utilizando el método PUT o PATCH: completed = true)
  • Una vez que una nueva tarea se crea mediante el método POST, la única forma en que los usuarios pueden ver las actividades relacionadas con sus tareas es a través de una actividad de Android que utiliza el método GET para obtener una lista de todas las tareas que posee el usuario, el usuario

Así que mis preguntas son:

  1. En lugar de tener el usuario para comprobar la aplicación cada vez. ¿Cómo puedo utilizar GCM para enviar notificar al usuario?
  2. ¿Cómo indicará a qué usuario o dispositivo enviará la notificación push?
  3. ¿Cómo sabe GCM cuando ha habido un cambio en las tareas o cuando un usuario POST una tarea?

Según la implementación de GCM , requiere que implemente un servidor remoto que gestionará todas las solicitudes, tanto entrantes como salientes. Puede hacerlo simplemente con un servidor web actuando como un servicio web, que obtendrá (por ejemplo) las solicitudes de los clientes con una HTTP POST , y el proceso actúa en consecuencia.

En lugar de tener el usuario para comprobar la aplicación cada vez. ¿Cómo puedo utilizar GCM para enviar notificar al usuario?

Esto será gestionado por el servidor que acabo de describir. Sabrá quién está suscrito y quién debe recibir las notificaciones.

¿Cómo indicará a qué usuario o dispositivo enviará la notificación push?

Lo mismo sucede aquí. El servidor, en una suscripción, debe almacenar los usuarios en algún tipo de almacenamiento (una base de datos SQL, por ejemplo), y de esta manera sabrá a quién enviar notificaciones. Esto implica que tendrá que implementar algún mecanismo de tiempo de espera. En mi caso, hago que los clientes envíen un POST HTTP dummy cada 30 segundos. Si no obtengo esta solicitud desde una cantidad de tiempo razonable, considero que el cliente ha agotado el tiempo de espera y, por lo tanto, los elimino de la base de datos.

¿Cómo sabe GCM cuando ha habido un cambio en las tareas o cuando un usuario POST una tarea?

La misma historia, todo es manejado por el servidor. Implementar la lógica de lo que debe suceder en cualquier solicitud.

Es posible que desee leer esto: Cómo enviar la ubicación del dispositivo en el servidor cuando sea necesario

Y también estas referencias:

  • Referencia en Google Cloud Messaging

  • Notificaciones Push de Android usando Google Cloud Messaging GCM – Android Ejemplo

  • Google Cloud Messaging utilizando PHP

  • Conexión entre PHP (servidor) y Android (cliente) Uso de HTTP y JSON

  • Notificaciones Empuje Android: Google Cloud Messaging (GCM). Implementación Cliente (Nueva Versión )

Android mantiene una conexión activa con los servidores de Google, pero no utiliza mucha energía o datos, ya que no se envía ningún tráfico hasta que algo envía un mensaje GCM a una aplicación en su teléfono. Sólo hay una conexión en el teléfono, utilizada por todas las aplicaciones: la instalación de una nueva aplicación que utiliza GCM no agrega 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 el mensaje a su dispositivo, a través de esa conexión abierta. El sistema de Android examina el mensaje para determinar la aplicación a la que pertenece y comienza la aplicación. La aplicación debe haberse registrado con Android para utilizar GCM y debe tener el permiso correspondiente. Cuando se inicia la aplicación, puede crear una notificación de inmediato con los datos del mensaje. Los mensajes de GCM son muy limitados en tamaño, 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, descargar los encabezados de nuevos correos electrónicos).

La ventaja de usar notificaciones push es que las aplicaciones no tienen que ejecutarse a intervalos regulares para comprobar si hay nuevos datos, ahorrando energía y 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 debe seguir funcionando, en lugar de que cada aplicación tenga que seguir funcionando en segundo plano para mantener su propia red Conexión a su propio servidor.

  • Iniciar sesión a través de servicio web de descanso de android utilizando retroalimentación no funciona
  • ¿Cómo puedo acceder a mi APT REST local desde mi dispositivo Android?
  • La mejor manera de proteger la API REST privada sin la autenticación de usuarios para aplicaciones para móviles
  • Cliente adecuado para Android REST
  • Diferencias entre las API de REST y JSON
  • Convertir objeto a JSON en Android
  • ¿Cómo puedo evitar que alguien se comunique con mi servidor, excepto mi aplicación de Android?
  • Android Spring Jackson Mapping: NoClassDefFoundError
  • Grape Rails API con Android
  • Primavera para Android, progreso de subida de archivos
  • Establecer Retrofit RestAdapter.LogLevel a algo que no sea FULL produce un cuerpo de respuesta vacía
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.