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

  • Smack mensaje oyente no llamado y conexión inestable
  • Notificaciones push de Android con XMPP
  • Android: asmack (portado) o smack (parcheado)?
  • No se puede conectar al servidor Openfire (mediante smack api)
  • ¿Cómo implementar servidor GCM-CCS XMPP de terceros utilizando openfire?
  • Diferencia entre el escuchador de paquetes smack y el oyente de mensajes
  • No se puede enviar o recibir presencia con ASmack
  • Push to talk con Android
  • El oyente de presencia no trabaja en asmack
  • La clase StickersManager no se encuentra para Quickblox
  • Enviar y recibir IQ XMPP ASMACK Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.