Saltar al contenido

¿Cómo obtener todos los tokens de dispositivos de Firebase?

Solución:

1. ¿Cómo obtener tokens de dispositivo de un servidor externo? Ahora estoy usando el SDK de administrador de Firebase.

Actualmente no existe una API para recuperar todos los tokens de registro para su aplicación desde el lado del servidor. Es responsabilidad del desarrollador (usted) enviar y almacenar el token de registro en su servidor de aplicaciones, que se genera desde el lado de la aplicación cliente.

2. ¿El token del dispositivo solo se genera cuando la aplicación está conectada al servidor FCM?

La documentación cubrió prácticamente esto (vea también mi respuesta aquí):

En el inicio inicial de su aplicación, el SDK de FCM genera un token de registro para la instancia de la aplicación cliente.

Técnicamente, no se conecta a los servidores FCM. Se conecta al servicio FirebaseInstanceID (a través del SDK), que a su vez genera el token de registro.

3. ¿Debo guardar el token en otra base de datos cuando el usuario ejecuta la aplicación por primera vez y registra el servidor FCM?

Como mencioné en el n. ° 1, debe guardarlo en un lugar donde pueda acceder fácilmente para enviar un mensaje.

El token del dispositivo se genera cuando la aplicación se conecta por primera vez, este token debe almacenarse en su base de datos y reemplazarse si se asigna un nuevo token

public class MyAndroidFirebaseInstanceIdService extends FirebaseInstanceIdService {

    private static final String TAG = "MyAndroidFCMIIDService";

    @Override
    public void onTokenRefresh() {
        //Get hold of the registration token
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();
        //Log the token
        Log.d(TAG, "Refreshed token: " + refreshedToken);
    }
    private void sendRegistrationToServer(String token) {
        //Implement this method if you want to store the token on your server
    }
}

Vea el siguiente tutorial

Sugiero no almacenar las fichas en absoluto. Almacenar el token parece una buena idea hasta que te das cuenta de que tus usuarios tienen varios dispositivos (dispositivo iOS, dispositivo Android, escritorio, etc.). Ahora tienes que administrar el almacenamiento de varios tokens de dispositivo por usuario y eso puede complicarse rápidamente.

En su lugar, ignore los tokens que se generan y simplemente suscriba a cada usuario a un tema, como cuando el usuario inicia sesión o crea una cuenta, suscríbalos a un tema compuesto por su ID de usuario.

NSString* useridchannel = [NSString stringWithFormat:@"user_%ld", (long)userid];
[[FIRMessaging messaging] subscribeToTopic:useridchannel completion:^(NSError * _Nullable error) {
       NSLog(@"Subscribed user to topic %@", useridchannel);
}];

Cuando el usuario cierre la sesión, asegúrese de cancelar su suscripción a ese tema, ya que probablemente no quieran recibir notificaciones si ya no están conectados a su aplicación.

NSString* useridchannel = [NSString stringWithFormat:@"user_%ld", (long)userid];
[[FIRMessaging messaging] unsubscribeFromTopic:useridchannel completion:^(NSError * _Nullable error) {
         NSLog(@"Unsubscribed user from %@", useridchanel);
}];

Me doy cuenta de que se supone que los Grupos de dispositivos se deben usar para este propósito, pero nuevamente no quiero molestarme en almacenar y administrar tokens y también Firebase Admin SDK para PHP no admite el envío de mensajes a Grupos de dispositivos. Al usar temas, no es necesario tratar con tokens de dispositivo y puede enviar mensajes a todos los dispositivos de los usuarios desde el servidor, la aplicación o la consola de base de fuego fácilmente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *