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!

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 ".

  • Asmack XMPP nuevo registro de usuario
  • Enviar mensaje desde el complemento del navegador web a android y la aplicación IOS usando XMPP
  • Integraciones de la API de Google Talk con la aplicación de Android
  • Problema en el bloqueo de usuario en la lista de chat usando smack y servidor de fuego abierto
  • Biblioteca de Android xmpp
  • Envío y recepción de mensajes con Smack Api para Android
  • ¿Cuál es la diferencia entre Smack y aSmack?
  • Android File Transfer no funciona a través de XMPP y OpenFire
  • IN XMPP obtener la excepción no autorizada (401), mientras que la presentación del formulario
  • Autenticar a Google Talk (XMPP, Smack) mediante un authToken
  • Cómo crear una cuenta de Smack 4.1
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.