¿Por qué los mensajes push de Android C2DM no siempre llegan?

He creado una aplicación C2DM que funciona y, en general, funciona muy bien y los mensajes push llegan rápidamente. Sin embargo, encuentro que con bastante regularidad cuando inicio la aplicación por primera vez o la vuelvo a enfocar, los mensajes no llegan.

Definitivamente se envían con éxito (obtengo una respuesta de 200) y el formato del mensaje es ciertamente correcto (enviar el mismo mensaje más tarde funciona bien). La falla puede durar unos pocos minutos y luego, de repente, comienza a funcionar nuevamente y funciona de manera consistente a partir de entonces.

Sin embargo, incluso después de que comienza a funcionar, los mensajes más antiguos aparentemente han desaparecido y nunca llegan. Los mensajes definitivamente no llegan: tengo un registro extenso que resalta los mensajes C2DM que llegan.

Soy plenamente consciente de que C2DM nunca garantizará la entrega, por lo que espero que algunos mensajes fallen, pero en mi experiencia, en algunas ocasiones, simplemente no funciona. Obviamente quiero entender si eso es algo que estoy haciendo mal en mi aplicación o en el servicio C2DM en sí mismo.

¿Qué podría causar que C2DM no entregue los mensajes? Si los mensajes no se pueden entregar, ¿por qué el servidor C2DM no intenta nuevamente desde su cola? Relacionado: ¿debería obtener una nueva ID de registro solo cuando la aplicación se inicie por primera vez o actualizarla cada vez que se inicie? Actualmente hago lo último (en la Aplicación, no en una Actividad).

Respuestas a la pregunta(2)

Su respuesta a la pregunta