6

Czy istnieje sposób ograniczenia rejestracji powiadomień wypychanych przez Firebase? Nie szuka tematów. Powiedzmy, że mam funkcję logowania. Chcę, aby zalogowani użytkownicy subskrybowali powiadomienia push. Następnie token można wysłać na serwer i zapisać.Ograniczanie powiadomień GCM/FCM poprzez wyrejestrowanie

W tym samym czasie, gdy użytkownicy się wylogują, użytkownik powinien również zostać wyrejestrowany.

Czy jest tam obecnie dostępny mechanizm? Przejrzałem dokumentację interfejsu API Firebase, ale nie mogłem nic na ten temat znaleźć.

Chcę tylko wiedzieć, czy coś przeoczyłem.

+1

Dlaczego po prostu wylogować się z funkcji [unsubscribeFromTopic()] (https://firebase.google.com/docs/cloud-messaging/android/topic-messaging#subscribe_the_client_app_to_a_topic)? –

Odpowiedz

5

Informacje na temat różnicy w używaniu deleteToken() w stosunku do deleteInstanceId() można znaleźć w tej answer.


Wyrejestrowanie instancji aplikacji (urządzenia/użytkownika) przy wylogowaniu nie jest zalecane od czasu nawet GCM. Jak na GCM docs

Deweloperzy powinni nigdy wyrejestrować aplikację kliencką jako mechanizmu wylogowania lub przełączania między użytkownikami, z następujących powodów:

  • Token rejestracja nie jest powiązana z określonym zalogowany użytkownik. Jeśli aplikacja klienta wyrejestruje, a następnie ponownie zarejestruje, aplikacja może otrzymać ten sam token rejestracyjny lub inny token rejestracji.

  • Wyrejestrowanie i ponowna rejestracja mogą zająć do pięciu minut. W tym czasie wiadomości mogą zostać odrzucone z powodu niezarejestrowanego stanu, a wiadomości mogą trafić do niewłaściwego użytkownika.

Jeśli nadal chcesz kontynuować, możesz nadal odnoszą się do tych samych docs powyżej.

Wyrejestrowanie i wypisania

Istnieją trzy metody aplikacja klient może użyć, aby zatrzymać odbieranie wiadomości i/lub subskrypcje tematów z serwera aplikacji:

  • instanceid deleteToken() z publiczność jest ustawiona na identyfikator nadawcy i zakres serwera aplikacji na GCM. Spowoduje to zatrzymanie komunikatów (w tym komunikatów o tematach) od określonego serwera aplikacji

  • InstanceID deleteID(). Spowoduje to zatrzymanie wiadomości ze wszystkich poprzednich rejestracji i subskrypcji tematów dla wszystkich serwerów aplikacji.

  • GCMPubSub wypisać(). Zatrzymuje wiadomości temat z konkretnym temacie serwera aplikacji

dla FCM, powinna ona być FirebaseInstanceId.

+0

Tak, to prawda, ale. Tematy są związane z grupowaniem. Na przykład. Sport. Dlatego celem używania tematów jest komunikowanie się z grupą użytkowników. Nie tego chcę. Chcę zarządzać poszczególnymi użytkownikami. Jeśli chcę komunikować się z jednym użytkownikiem, możliwe jest token. Ale załóżmy, że użytkownik jest wylogowany. Ale nadal komunikacja powinna być niemożliwa. –

+0

@HashanSenevirante Masz na myśli całkowite wyrejestrowanie użytkownika? –

+0

Tak. Gdy użytkownik ponownie się zaloguje, zarejestruj się ponownie. –