tutorial topic subscribetotopic notification example enviar create android firebase firebase-cloud-messaging

android - topic - Cancelar la suscripción a todos los temas a la vez de Firebase Messaging



send firebase message (4)

¿Hay alguna forma de darse de baja de todos los temas a la vez?

Estoy usando Firebase Messaging para recibir notificaciones push de algunos temas suscritos, y de alguna manera necesito cancelar mi suscripción a todos los temas sin cancelar la suscripción uno por uno. ¿Es eso posible?


Mantenga una lista privada de temas suscritos en Preferencias.

No es tan dificil. Esto es lo que hago:

public class PushMessagingSubscription { private static SharedPreferences topics; public static void init(ApplicationSingleton applicationSingleton) { topics = applicationSingleton.getSharedPreferences("pushMessagingSubscription", 0); } public static void subscribeTopic(String topic) { if (topics.contains(topic)) return; // Don''t re-subscribe topics.edit().putBoolean(topic, true).apply(); // Go on and subscribe ... } public static void unsubscribeAllTopics() { for (String topic : topics.getAll().keySet()) { FirebaseMessaging.getInstance().unsubscribeFromTopic(topic); } topics.edit().clear().apply(); // FirebaseInstanceId.getInstance().deleteInstanceId(); } }


Puede usar la API de instancia para consultar todos los temas disponibles suscritos a un token dado y luego llamar a la solicitud múltiple para cancelar la suscripción de todos los temas.

Sin embargo, si desea dejar de recibir de todos los temas y luego el token no es útil, puede llamar a FirebaseInstanceId.getInstance().deleteInstanceId() (referencia: deleteInstanceId() y rodearlo con un intento / captura de un potencial IOException) que restablecerá la identificación de la instancia y, de nuevo, puede suscribirse a nuevos temas desde la nueva identificación de la instancia y el token.

Espero que esto ayude a alguien.


Puedes usar:

FirebaseMessaging.getInstance().unsubscribeFromTopic("Topic name");


Sé que esta no es la mejor manera pero funciona! Puede almacenar la lista de todos los temas en la base de datos y luego anular la suscripción de todos los temas cuando se cierra la sesión del usuario

final FirebaseMessaging messaging= FirebaseMessaging.getInstance(); FirebaseDatabase.getInstance().getReference().child("topics").addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { String topic = dataSnapshot.getValue(String.class); messaging.unsubscribeFromTopic(topic); }...//rest code