GCM: cómo evitar el estrangulamiento

Mi sistema androide necesita enviar actualizaciones frecuentes a una aplicación para tablet (un quiosco siempre conectado a wifi y enchufe).
GCM-HTTP (//developer.android.com/google/gcm/http.html) funciona bien, pero en algunos casos puede ocurrir que un único dispositivo reciba muchas notificaciones que activen el conocido problema de regulación descrito aquí (// developer. Android.com/google/gcm/adv.html#throttling). Esto es un problema ya que la carga útil en la notificación es de gran importancia para el sistema. ¿Cuál es la mejor solución para evitar esto?

  • Implementa en el servidor un servicio que agrupa las notificaciones al mismo dispositivo y las dispara con una frecuencia limitada.
  • Utilice un servicio XMPP. Me gustaría usar GCM-XMPP (//developer.android.com/google/gcm/ccs.html) pero necesitas estar firmado en una lista blanca, así que no creo que todo el mundo pueda utilizarla. Como alternativa debo usar unSmack o Quickblox como se aconseja aquí ( Android y XMPP: Soluciones disponibles actualmente ) y aquí ( Mejor manera de implementar la aplicación de chat usando XMPP en Android? ) Respectivamente?
  • Implementar una conexión de socket básica como se describe en (//thinkandroid.wordpress.com/2010/03/27/incorporating-socket-programming-into-your-applications/)? En este caso tengo que tener en cuenta la posibilidad de que la conexión se pierda momentáneamente?

SOLUCIÓN: He encontrado la solución a mi pregunta, que es el protocolo XMPP. Al principio implementé aSmack en la aplicación de tableta y configuré un servidor eJabberd que funcionaba localmente. La implementación ha sido bastante fácil. Después de un par de semanas recibí un correo de Google para el GCM-XMPP, que es aún más rápido para incrustar en la aplicación y funciona muy bien!

One Solution collect form web for “GCM: cómo evitar el estrangulamiento”

Tal vez estableciendo time_to_live a 0.

Desde http://developer.android.com/google/gcm/adv.html :

"Otra ventaja de especificar la fecha de caducidad para un mensaje es que GCM nunca acelerará los mensajes con un valor time_to_live de 0 segundos.En otras palabras, GCM garantizará el mejor esfuerzo para los mensajes que deben ser entregados" ahora o nunca ". Que un valor time_to_live de 0 significa que los mensajes que no se pueden entregar inmediatamente serán descartados, sin embargo, debido a que tales mensajes nunca se almacenan, esto proporciona la mejor latencia para el envío de notificaciones ".

  • ¿Cómo usar Smack 4.2 para conectarse a ejabberd?
  • Cómo crear una cuenta de Smack 4.1
  • Obteniendo "XMPPException $ XMPPErrorException: XMPPError: service-unavailable - cancel" al crear un grupo usando XMPP (4.1.3)
  • XMPP aSmack - ¿Cómo puedo obtener el estado de usuario actual (offline / online / away / etc.)?
  • Vida de la batería de Android XMPP
  • GCM XMPP CCS vs MQTT
  • No se puede crear una sala de chat multiusuario (MUC) con la biblioteca aSmack para Android: "packet.DefaultPacketExtension no se puede convertir en paquete.MUCUser"
  • Obtener XMPP Open Fire Historial de mensajes privados y archivado de mensajes en Android
  • InstanceID y Regid GCM
  • ¿Cómo crear un cliente de chat XMPP para Facebook?
  • No se puede iniciar sesión en el servidor ejabberd mediante el cliente XMPP en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.