Firebase Cloud Messaging-Zarządzanie Tokenami Rejestracji

Patrzę na implementację wiadomości między aplikacjami mobilnymi i przeglądarkowymi za pomocą Firebase cloud messaging i mam kilka pytań, na które dokumenty nie wydają się odpowiadać.

Aby móc odbierać wiadomości, potrzebujesz Tokena rejestracyjnego (RT). Wiadomości mogą być wysyłane do RT, do tematu lub do grupy urządzeń notification_key.RT może być również używany:

  • bezpośrednio
  • aby subskrybować temat
  • aby dodać do grupy urządzeń

RT może również expire/change.

W mojej aplikacji, prowadzę listę RT na użytkownika. Teraz, gdy zmienia się RT:

  1. Czy muszę zrezygnować ze starego tokena i subskrybować nowy token do tematów?
  2. Czy muszę usunąć stary token i dodać nowy token do grup urządzeń?
  3. Czy można uzyskać informacje o grupach urządzeń/tematach dla tokena?
  4. Czy Mogę dodać token do grupy urządzeń więcej niż jeden raz?
  5. Czy Mogę zasubskrybować token do tematu więcej niż jeden raz?
  6. czy wiele subskrypcji / dodatków tego samego tokena spowoduje otrzymywanie zduplikowanych wiadomości

Sorry, to dużo pytań, ale chyba dla kogoś, kto przez to przeszedł, to powinno być ciasto;)

Author: Ralf Bokelberg, 2017-02-15

1 answers

  1. Czy muszę zrezygnować ze starego tokena i subskrybować nowy token do tematów?

AFAIK, nie musisz rezygnować ze starego tokena, ponieważ zostanie on odrzucony przez samą FCM. Dla nowego tokena, tak, będziesz musiał subskrybować go do tematu, którego potrzebujesz. Zwykle robi się to (w Androidzie), mając subscribeToTopic() w onTokenRefreshed().


  1. Czy muszę usunąć stary token i dodać nowy token do grup urządzeń?
Tak. Musisz obsługiwać mapowanie / relacje dla wiadomości grupy urządzeń. Zobacz moją odpowiedź tutaj . To różni się od tematów. Token zostanie unieważniony, ale będzie przechowywany jako część listy tokenów rejestracyjnych dla odpowiedniego klucza rejestracyjnego.

Dlatego istnieje możliwość otrzymania błędu NotRegistred na jednym ze tokenów, jeśli wyślesz do grupy urządzeń. :)


  1. czy możliwe jest uzyskanie informacji o urządzeniu grupy / tematy dla tokena?

Dla wiadomości grup urządzeń( to samo z #2), deweloper (ty) musisz zarządzać tymi danymi samodzielnie. W tematach możesz użyć API InstanceID . W szczególności ustaw parametr details na true:

[opcjonalne] boolean details: Ustaw ten parametr zapytania na true, Aby uzyskać dostępne dane tokena IID, w tym informacje o połączeniu i informacje o Subskrybcji tematu FCM lub GCM (jeśli takie istnieją) dla urządzenia powiązanego z tym token. Jeśli nie podano, domyślnie false.


  1. Czy Mogę dodać token do grupy urządzeń więcej niż jeden raz?

Ahmm. Tak. Masz na myśli ten sam token? Jeśli tak, to jeszcze nie próbowałem. Równie dobrze można sprawdzić po stronie klienta przed dodaniem.


  1. Czy Mogę zasubskrybować token do tematu więcej niż raz?

Jeśli masz na myśli ponowną subskrypcję, to tak. Jeśli masz na myśli duplikat żądania aby zapisać się, myślę, że wynik nadal będzie sukcesem. Bez zmian w zachowaniu.


  1. czy wiele subskrypcji / dodatków tego samego tokena spowoduje otrzymywanie duplikatów wiadomości?

Przetestowałem to. Nie będziesz otrzymywać zduplikowanych wiadomości zarówno dla zduplikowanych subskrypcji tematów, jak i dodawania tego samego tokenu do grupy urządzeń. Wygląda na to, że FCM ignoruje prośbę o subskrypcję / dodanie tokena rejestracyjnego, jeśli jest już subskrybowany / dodany do grupa urządzeń.

 9
Author: AL.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:46:48