Error de GCM: no registrado

Logré probar mi código de GCM.

Pero exactamente el mismo código, no pude obtener el empuje de GCM y obtuve:

Error de GCM: no registrado.

Respuesta de GCM Not Registered significa seguir “Si no está NotRegistered , debe eliminar la identificación de registro de su base de datos del servidor porque la aplicación se desinstaló del dispositivo o no tiene un receptor de difusión configurado para recibir com.google.android.c2dm.intent .RECEIVE intents “. de la documentación . Compruebe en qué caso recibe este error, cuando la aplicación se desinstala del dispositivo o describe un receptor de difusión incorrecto en AndroidManifest. Puede probar su funcionalidad GCM con mi servidor GCM de prueba . Espero que esto te ayude.

Si está utilizando un dispositivo para realizar pruebas, debe eliminar InstanceID antes de obtener el token y volver a realizar la prueba, ya que una vez que sobrescribe su APK, este registra ese InstanceId y obtiene el error NotRegistered. Entonces, en su clase RegisterIntentService, en la función onHandleIntent haga lo siguiente:

 InstanceID instanceID = InstanceID.getInstance(this); try { instanceID.deleteInstanceID(); } catch(IOException e) { e.printStackTrace(); } instanceID = InstanceID.getInstance(this); 

Not Registered ocurre cuando GCM cree que el dispositivo no pudo manejar el mensaje. Esto sucede si la aplicación se desinstala o se configura mal para manejar el mensaje:

enter image description here

En base a las respuestas de @Samik y @ O’Rilla, sugeriría los siguientes pasos:

  1. Desinstalar la instalación actual desde el dispositivo Android
  2. Asegúrese de tener y definidos en el nodo en AndroidManifest.xml .
  3. Asegúrate de tener la en tu
  4. Asegúrese de que la implementación de Receiver sea correcta

Si realmente crees que tu código es correcto y sigues recibiendo un error

 {"error": "NotRegistered"} 

intente desinstalar la aplicación manualmente desde el teléfono y vuelva a ejecutarla (su dispositivo obtendrá una nueva identificación de registro).

¡Al menos en mi caso el problema fue resuelto!

Tuve este error cuando tenía el receptor gcm fuera de la aplicación en el archivo de manifiesto. Movió el receptor al scope de la aplicación y todo funcionó. Un conejito muy feliz ahora.

  ...  ...  ...  

Estaba usando el viejo código obsoleto para GCM:

 if (gcm == null) { gcm = GoogleCloudMessaging.getInstance(this); } String regId = gcm.register(SENDER_ID); msg = "Device registered, registration ID=" + regId; 

y cuando intenta cambiar a la nueva forma:

 InstanceID instanceID = InstanceID.getInstance(this); String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); 

Estaba recibiendo el mismo error y me estaba volviendo loco durante dos días seguidos.

Después de probar todo en el libro, lo que lo solucionó fue deshabilitar GCM en la consola de desarrolladores, volver a habilitarlo, y luego ir aquí: https://developers.google.com/mobile/add para generar un nuevo archivo google-services.json para mi aplicación de Android.

También tenga en cuenta que RegistrationIntentService debe estar en la raíz de su paquete o no funcionará. (vea este ejemplo para la implementación de gcm en Android: https://github.com/google/gcm )

Espero que esto ayude a alguien porque perdí días en esto !!!! > <

Una cuenta de Google es un requisito en dispositivos con Android 4.0.4 o inferior. http://developer.android.com/google/gcm/gcm.html

También debe agregar en su archivo de manifiesto.

Esto significa que simplemente está dando una identificación de registro incorrecta. Entonces, para esto, primero ejecute su aplicación móvil y su identificación de registro aparecerá como un token. Coloque este token en el código de su servidor de aplicaciones como ID de registro. Para la ID de la aplicación, proporcione la identificación del servidor, que puede obtener de la consola del desarrollador de Google, su proyecto y las credenciales. Para Id de remitente, configure su ID de proyecto que podría obtenerse del proyecto, configuración en la consola de desarrollador.