La aplicación no se despierta al recibir la transmisión de mensajes de gcm

Recientemente he agregado mensajes de GCM a mi aplicación usando las clases de ayuda de google (GCMBroadcastReceiver, GCMBaseIntentService). Funciona maravillosamente cuando la aplicación se está ejecutando, tanto cuando está en primer plano y cuando no lo es. Sin embargo, cuando no está funcionando, nada funciona.

Como prueba, extendí GCMBroadcastReceiver y agregé declaraciones de registro a getGCMIntentServiceClassName () y peekService (). Cuando la aplicación se está ejecutando y llega un mensaje, veo a la primera llamada. El sistema operativo a continuación, instancia de mi clase de servicio, lo que finalmente resulta en onMessage () que se llama.

Cuando la aplicación no se está ejecutando getGCMIntentServiceClassName () nunca se llama.

Mi manifiesto es más o menos el código de calderas de los ejemplos de GCM de Google.

¿Hay un permiso adicional o bandera que necesito establecer para que el sistema operativo pueda activar mi aplicación cuando no esté en ejecución y llegue un mensaje con la categoría de intenciones correcta? Mi receptor se define como:

<receiver android:name=".GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="PACKAGENAME" /> </intent-filter> </receiver> 

Tenga en cuenta: esto funciona cuando la aplicación se ejecuta en segundo plano.

Bleh. Lo averiguó. La respuesta de David Wasser aquí:

BroadcastReceiver no funciona

explica por qué no veo las emisiones cuando mi aplicación no se está ejecutando. Yo estaba forzado a abandonarlo de Manage Applications, que lo coloca en el estado "detenido" (y por lo tanto hace que el sistema lo excluya de las transmisiones por defecto).

Cuando instalo la aplicación, lo lanzo, apago el dispositivo, luego lo vuelvo a encender, estoy recibiendo las transmisiones correctamente.

Tuve el mismo problema y arreglado con sólo ejecutar el botón RUN a través de Android Studio.

Creo que en modo de depuración no funciona

  • Android GCM: ¿Por qué a veces falla?
  • usando la daga para inyectar la base de datos junto con el gcm que recuperará datos de la base de datos
  • GcmListenerService no se llama Cuando la aplicación está en segundo plano
  • Proyecto de API carece de ID de proyecto en Google Developers Console
  • Error de difusión intención callback: resultado = CANCELADO forIntent {act = com.google.android.c2dm.intent.RECEIVE pkg = com.flagg327.guicomaipu (tiene extras)}
  • Obtenga el ID de registro canónico de GCM sin enviar un mensaje
  • Administrar el ID de registro de GCM en el servidor
  • Android - enviar sms en un hilo separado
  • Registro de Google Cloud Messaging AUTHENTICATION_FAILED
  • Error = TooManyMessages GCM
  • Carga útil de notificación de GCM 3.0 que no muestra la notificación de Android cuando la aplicación está en primer plano
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.