El ID de registro de la aplicación no se genera en GCM Android

He intentado algunas páginas del foro y he buscado a través de stackoverflow para lo mismo, pero no encontré la solución.

He utilizado el siguiente código para generar ID de registro para la notificación de GCM. Pero consigo una cadena vacía como un ID de registro:

GCMRegistrar.checkDevice (este); GCMRegistrar.checkManifest (este);

if (GCMRegistrar.isRegistered (this)) {Log.d ("info", GCMRegistrar.getRegistrationId (this)); }

regId = GCMRegistrar.getRegistrationId(this); Log.v("log", " register id oslo : " + regId); if (regId.equals("")) { // replace this with the project ID GCMRegistrar.register(this, "718437041388"); Log.d("info", GCMRegistrar.getRegistrationId(this)); } else { Log.d("info", "already registered as" + regId); } 

Por favor, ayúdame con esto, dime si tengo algo malo.

Gracias de antemano, Nirav.

No debería obtener la registrationId justo después de GCMRegistrar.register(this, "718437041388");
De hecho, ¿tienes un GCMIntentService.java correcto que recibe el regId?
En caso afirmativo, puede obtener la regId del onRegistered dentro de GCMIntentService.java

  @Override protected void onRegistered(Context context, String registrationId) { Log.i(TAG, "Device registered: regId = " + registrationId); Log.d("GCMIntentService", "in GCMIntentService"); displayMessage(context, getString(R.string.gcm_registered)); ServerUtilities.register(context, registrationId); } 

Darse cuenta de

  GCMRegistrar.register(this, "..."); 

es asíncrono. Por lo tanto, llamar a GCMRegistrar.getRegistrationId(this) inmediatamente después de que no es confiable, por lo que debe evitarlo.

El identificador llegará a través de devolución de llamada a su GCMIntentService , como parte del procedimiento de registro. desde allí se puede almacenar la clave gcm en cualquier lugar que desee, y utilizarlo en otras partes de la aplicación (por lo general en el servidor).

Tenga en cuenta que GCMIntentService debe definirse en el paquete raíz de su aplicación para que funcione.

Prueba a usar el emulador con la API de Google y también sincronizar con una cuenta de Google.

Tengo el mismo problema después de 1 día de lucha que encontrar la solución. Primero pongo mi Código Relacionado con GCM en Mi Paquete Principal y hago el cambio de acuerdo a Mi Paquete en androidManifest.xml

te doy un ejemplo sencillo. Mi nombre del proyecto es GCMExample y tengo tres paquete 1. com.examle.GCMExample (paquete principal), 2. com.examle.GCMExample.activity (segundo paquete), 3. com.example.GCMExample.adapter (tercer paquete)

No obtengo el Id de registro cuando mi archivo de clase relacionado de GCM en mi segundo paquete

Mi clase GCM relacionada como 1. GCMIntentService, 2. ServerUtilities, 3. CommonUtilities 4. WakeLocker poner en mi paquete principal com.example.GCMExample

también mi androidManifest.xml

  <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.VIBRATE" /> <permission android:name="com.example.GCMExample.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.example.GCMExample.C2D_MESSAGE" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <!-- Receives the actual messages. --> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <!-- Receives the registration id. --> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="com.example.GCMExample" /> </intent-filter> </receiver> <service android:name="com.example.GCMExample.GCMIntentService" /> 

Agregue el archivo jar de GCM en la carpeta lib de su proyecto

  • Facebook SSO y registro de sitio de terceros en un solo paso?
  • ¿Por qué no debería usar System.out.println () en android
  • Creación y almacenamiento de archivos de registro en dispositivos en Android
  • Lectura de archivos registrados a través de slf4android?
  • ¿Cómo puedo desactivar el registro interno de Android para etiquetas específicas (por ejemplo, AbsListView, GestureDetector, endeffect)
  • Informe de errores completo y personalizado de las aplicaciones de Android
  • Android ocultar registros en la aplicación al cargar en el mercado
  • ¿Cómo registrar el cuerpo de solicitud y respuesta con Retrofit-Android?
  • SLF4J varargs interpreta la primera cadena como marcador
  • Imprimir el contenido de un paquete a Logcat?
  • Android desactivar "SignalStrength", etc para iniciar sesión LogCat
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.