2016-07-05 69 views
12

C'è un modo per annullare l'iscrizione a tutti gli argomenti contemporaneamente?Annulla l'iscrizione da tutti gli argomenti in una volta da Firebase Messaging

Sto utilizzando Firebase Messaging per ricevere notifiche push da alcuni argomenti sottoscritti, e in qualche modo ho bisogno di annullare l'iscrizione da tutti gli argomenti senza annullare l'iscrizione uno alla volta. È possibile?

+3

per quanto ne so non c'è sorta di "rimuovere tutte le" api chiamata – tyczj

+1

Ciò non è possibile in questo momento. –

+0

lo considereresti "uno ad uno" se recupererai un elenco di tutti gli argomenti e lo passerai in loop? – tobifasc

risposta

-4

È possibile utilizzare:

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

Non si cancellerà immediatamente; Dovrò annullare l'iscrizione a ciascun evento e questo è quello che non voglio fare. –

+0

In questo momento Firebase non fornisce alcun metodo per annullare l'iscrizione di tutti gli eventi contemporaneamente. – Abhishek

+0

si annulla solo 1 argomento – ziniestro

7

È possibile utilizzare Instance API per interrogare tutti gli argomenti disponibili sottoscritti dato token e di chiamata richiesta multipla annullare l'iscrizione a tutti gli argomenti.

Tuttavia, se si desidera interrompere la ricezione di tutti gli argomenti e quindi il token non è utile a tutti, è possibile chiamare FirebaseInstanceId.getInstance().deleteInstanceId() (riferimento: deleteInstanceId() e surround con un try/catch per un potenziale IOException) che consente di resettare il id di istanza e di nuovo è possibile iscriversi a nuovi argomenti dal nuovo id di istanza e token.

Spero che questo aiuti qualcuno.

+0

Nel mio caso non funziona perché non memorizzo alcuna 'instance'. Gli utenti ricevono solo informazioni dagli argomenti sottoscritti –

+0

@Lennon ID istanza di reimpostazione rimuoverà tutto lo stato sottoscritto. E darti una nuova istanza vuota – kirtan403

+0

Come sai che eliminando l'istanza tutti gli argomenti sottoscritti saranno revocati? –

0

So che questo non è il modo migliore, ma funziona! È possibile memorizzare l'elenco di tutti gli argomenti di database e quindi annullare l'iscrizione a tutti gli argomenti quando l'utente segno-outs

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 
+0

Può funzionare, ma è ancora uno per uno. –