Rodzaje wiadomości w usłudze Firebase Cloud Messaging

Za pomocą FCM możesz wysyłać do aplikacji klienckich 2 rodzaje wiadomości:

  • Wiadomości z powiadomieniami, podobnie jak „wiadomości wyświetlane”, są obsługiwane automatycznie przez pakiet SDK FCM.
  • Wiadomości z danymi, które są obsługiwane przez aplikację kliencką.

Wiadomości z powiadomieniami zawierają wstępnie zdefiniowany zestaw kluczy widocznych dla użytkownika i mogą zawierać opcjonalny ładunek danych. Wiadomości z danymi zawierają natomiast tylko zdefiniowane przez Ciebie niestandardowe pary klucz-wartość. Maksymalny rozmiar ładunku w przypadku obu typów wiadomości to 4096 bajtów, z wyjątkiem wysyłania wiadomości z konsoli Firebase, w której obowiązuje limit 1000 znaków.

Scenariusz użycia Jak wysłać
Treść powiadomienia FCM Pakiet SDK wyświetla wiadomość na urządzeniach użytkowników w imieniu aplikacji klienckiej, gdy działa ona w tle. W przeciwnym razie, jeśli aplikacja działa na pierwszym planie w momencie otrzymania powiadomienia, jej kod określa zachowanie.
  1. W zaufanym środowisku, np. Cloud Functions lub na serwerze aplikacji, używaj Firebase Admin SDK lub interfejsu HTTP API w wersji 1. Ustaw klucz notification. Może zawierać opcjonalny ładunek danych. Zawsze zwijana.

    Zobacz kilka przykładów powiadomień displayowych i ładunków żądań wysyłania.

  2. Użyj edytora powiadomień: wpisz tekst wiadomości, tytuł itp. i wyślij. Dodaj opcjonalny ładunek danych, podając dane niestandardowe.
Wiadomość z danymi Za przetwarzanie wiadomości z danymi odpowiada aplikacja klienta. Wiadomości z danymi zawierają tylko niestandardowe pary klucz-wartość bez zarezerwowanych nazw kluczy (patrz poniżej). W zaufanym środowisku, np. Cloud Functions lub na serwerze aplikacji, używaj interfejsu Firebase Admin SDK lub interfejsu HTTP v1 API. W żądaniu wysyłania ustaw klucz data.

Wiadomości z powiadomieniami możesz używać, gdy chcesz, aby pakiet SDK FCM automatycznie wyświetlał powiadomienie, gdy aplikacja działa w tle. FCM może wysłać wiadomość z powiadomieniem z opcjonalnym ładunkiem danych. W takich przypadkach FCM wyświetla ładunek powiadomienia, a aplikacja kliencka obsługuje ładunek danych.

Wiadomości z danymi możesz używać, gdy chcesz przetwarzać wiadomości za pomocą własnego kodu aplikacji klienckiej.

Wiadomości z powiadomieniami

Wiadomości z powiadomieniami możesz wysyłać za pomocą Firebasekonsoli, Firebase Admin SDK lub interfejsu FCM HTTP v1 API. Firebase Konsola udostępnia testy A/B oparte na analizach, które pomagają udoskonalać i ulepszać wiadomości z powiadomieniami.

Aby wysyłać wiadomości z powiadomieniami za pomocą interfejsu Firebase Admin SDK lub FCMHTTP v1 API, ustaw klucz notification z wstępnie zdefiniowanym zestawem opcji klucz-wartość wiadomości z powiadomieniem. Poniższy przykład pokazuje, jak sformatować wiadomość z powiadomieniem w aplikacji do obsługi komunikatorów.

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}

Gdy aplikacja działa w tle, wiadomości z powiadomieniami są dostarczane do obszaru powiadomień. W przypadku aplikacji działających na pierwszym planie wiadomości są obsługiwane przez funkcję wywołania zwrotnego.

Pełną listę wstępnie zdefiniowanych kluczy dostępnych do tworzenia wiadomości z powiadomieniami znajdziesz w dokumentacji referencyjnej obiektu powiadomienia interfejsu FCM HTTP v1 API.

Wiadomości z danymi

To Ty decydujesz, jak użyjesz ładunku FCM data do wdrożenia wybranego schematu szyfrowania. Upewnij się, że w niestandardowych parach klucz-wartość nie używasz żadnych słów zastrzeżonych. Zarezerwowane słowa to m.in. from, message_type i każde słowo zaczynające się od google., gcm. lub gcm.notification..

W przykładzie poniżej pokazano użycie pola danych najwyższego poziomu, czyli pola danych wspólnych, które jest interpretowane przez klientów na wszystkich platformach otrzymujących wiadomość. Na każdej platformie aplikacja kliencka otrzymuje ładunek danych w funkcji wywołania zwrotnego.

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}