Firebase (FCM) cómo obtener el token

Es mi primer uso FCM.

Descargar una muestra de firebase / quickstart-android e instalar el FCM Quickstart.But no puedo obtener ningún símbolo del registro incluso pulsar el botón LOG TOKEN en la aplicación.

Entonces intento enviar el mensaje con la consola de Firebase y fijar para apuntar al nombre de paquete de mi app. Conseguí cualquier mensaje entrante.

Quiero saber si FCM se puede usar? GCM todo está bien.

Solución:

Debido a que no soy un desarrollador de Android, sólo un desarrollador de backend.Por lo que me lleva algún tiempo para resolver it.In mi opinión, hay `re algún error en la aplicación de ejemplo.

Introduzca aquí la descripción de la imagen

Código:

RegistrationIntentService.java

public class RegistrationIntentService extends IntentService { private static final String TAG = "RegIntentService"; public RegistrationIntentService() { super(TAG); } @Override protected void onHandleIntent(Intent intent) { String token = FirebaseInstanceId.getInstance().getToken(); Log.i(TAG, "FCM Registration Token: " + token); } } 

MyFirebaseInstanceIDService.java

 public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { private static final String TAG = "MyFirebaseIIDService"; /** * Called if InstanceID token is updated. This may occur if the security of * the previous token had been compromised. Note that this is called when the InstanceID token * is initially generated so this is where you would retrieve the token. */ // [START refresh_token] @Override public void onTokenRefresh() { // Get updated InstanceID token. // String refreshedToken = FirebaseInstanceId.getInstance().getToken(); // Log.d(TAG, "Refreshed token: " + refreshedToken); // // // TODO: Implement this method to send any registration to your app's servers. // sendRegistrationToServer(refreshedToken); // Intent intent = new Intent(this, RegistrationIntentService.class); startService(intent); } // [END refresh_token] /** * Persist token to third-party servers. * <p> * Modify this method to associate the user's FCM InstanceID token with any server-side account * maintained by your application. * * @param token The new token. */ private void sendRegistrationToServer(String token) { // Add custom implementation, as needed. } } 

Agrega esto en MainActivity.java.

  Intent intent = new Intent(this, RegistrationIntentService.class); startService(intent); 

Después de hacer arriba, usted puede conseguir el Token en logcat. Pero finalmente encuentro una manera conveniente de conseguirlo. Simplemente use el modo de depuración para instalar la aplicación de ejemplo y puede obtener el token cuando la instale por primera vez.

Pero no sé t why it can imprimir el registro cuando lo instalo. Tal vez esté relacionado con el sistema móvil.

Y entonces por qué no puedo obtener la Notificación. FirebaseMessagingService.onMessageReceived no llamó a sendNotification

Información importante.

Si el servicio de juego de google se colgó o no se ejecutó, entonces fcm return token = null

De acuerdo con doc

Migrar una aplicación cliente GCM a FCM

 onTokenRefresh() 

Sólo se llama si se actualiza Token InstanceID

Por lo tanto, solo llamará a primera hora cuando instale una aplicación en su dispositivo.

Por lo tanto, sugiero desinstalar su aplicación manualmente y tratar de ejecutar de nuevo

Definitivamente obtendrás TOKEN

Trabaja para mi

 Log.d("Firebase", "token "+ FirebaseInstanceId.getInstance().getToken()); 

Prueba esto. ¿Por qué utiliza RegistrationIntentService ?

 public class FirebaseInstanceIDService extends FirebaseInstanceIdService { @Override public void onTokenRefresh() { String token = FirebaseInstanceId.getInstance().getToken(); registerToken(token); } private void registerToken(String token) { } } 

En lugar de esto:

  // [START refresh_token] @Override public void onTokenRefresh() { // Get updated InstanceID token. // String refreshedToken = FirebaseInstanceId.getInstance().getToken(); // Log.d(TAG, "Refreshed token: " + refreshedToken); // // TODO: Implement this method to send any registration to your app's servers. // sendRegistrationToServer(refreshedToken); // Intent intent = new Intent(this, RegistrationIntentService.class); startService(intent); } // [END refresh_token] 

Hacer esto:

  // [START refresh_token] @Override public void onTokenRefresh() { // Get updated InstanceID token. String refreshedToken = FirebaseInstanceId.getInstance().getToken(); // Log.d(TAG, "Refreshed token: " + refreshedToken); // Implement this method to send token to your app's server sendRegistrationToServer(refreshedToken); } // [END refresh_token] 

Y una cosa más:

sendRegistrationToServer() llamar al método sendRegistrationToServer() que actualizará el token en el servidor, si está enviando notificaciones push desde el servidor.

ACTUALIZAR:

Se genera un nuevo token Firebase ( onTokenRefresh() se llama) cuando:

  • La aplicación elimina ID de instancia
  • La aplicación se restaura en un dispositivo nuevo
  • El usuario desinstala / vuelve a instalar la aplicación.
  • El usuario borra los datos de la aplicación.

Al mismo tiempo don no se olvide de incluir esto en su archivo de manifiesto para recibir id de token

 <service android:name=".MyFirebaseInstanceIDService"> <intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> </intent-filter> </service> 

Si está utilizando alguna función de autorización de FB, puede tomar el token usando esto:

 //------GET USER TOKEN------- FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser(); mUser.getToken(true) .addOnCompleteListener(new OnCompleteListener<GetTokenResult>() { public void onComplete(@NonNull Task<GetTokenResult> task) { if (task.isSuccessful()) { String idToken = task.getResult().getToken(); // ... } } }); 

Funcione bien si el usuario está registrado. GetCurrentUser ()

  • ¿Qué es FCM token en Firebase?
  • Notificación de empuje FCM (Firebase Cloud Messaging) con Asp.Net
  • Firebase onTokenRefresh () no se llama
  • No se puede actualizar la dependencia de Firebase (com.google.firebase)
  • Android Firebase MyFirebaseMessagingService no se llama cuando se borra la aplicación de la lista reciente
  • ¿Por qué firebase push_token devuelve la lista negra?
  • Cómo manejar la notificación cuando la aplicación en segundo plano en Firebase
  • Notificaciones de Firebase cuando la aplicación está cerrada
  • Cómo detener la notificación FCM en Android?
  • ¿Cuándo necesita un servidor de aplicaciones para la mensajería de Cloud Firebase?
  • La mensajería en la nube de FireBase no funciona
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.