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 powiadomieniem, podobnie jak „wiadomości wyświetlane”, są automatycznie obsługiwane przez pakiet SDK FCM. (Na urządzeniach z Androidem i AndroidConfigV2 używaj RemoteNotification w przypadku wszystkich wiadomości, które wyświetlają powiadomienie widoczne dla użytkownika, aby były dostarczane bez zamierzonego opóźnienia. Powiadomienia są wyświetlane automatycznie niezależnie od tego, czy aplikacja działa na pierwszym planie, czy w tle, chyba że zostały wyraźnie wyciszone w kodzie klienta).
  • Wiadomości z danymi, które są obsługiwane przez aplikację kliencką.

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

Scenariusz użycia Jak wysłać
Treść powiadomienia Pakiet SDK FCM wyświetla wiadomość na urządzeniach użytkowników w imieniu aplikacji klienckiej, gdy działa ona w tle. Jeśli aplikacja działa na pierwszym planie, gdy nadejdzie powiadomienie, zachowanie określa kod aplikacji.
  1. W zaufanym środowisku, takim jak Cloud Functions lub serwer aplikacji, użyj Firebase Admin SDK lub interfejsu HTTP v1 API. Ustaw klucz notification. Może zawierać opcjonalny ładunek danych. Zawsze zwijana.

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

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

Możesz używać powiadomień, gdy chcesz, aby pakiet SDK FCM automatycznie wyświetlał powiadomienie, gdy aplikacja działa w tle. FCM może wysłać powiadomienie 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

Powiadomienia możesz wysyłać za pomocą konsoli Firebase, Firebase Admin SDK lub interfejsu FCM HTTP v1 API. Konsola Firebase udostępnia testy A/B oparte na statystykach, które pomagają ulepszać powiadomienia.

Aby wysyłać powiadomienia za pomocą interfejsu HTTP v1 API Firebase Admin SDK lub FCM, ustaw klucz notification ze wstępnie zdefiniowanym zestawem opcji klucz-wartość powiadomienia. Możesz użyć tego przykładu, aby sformatować wiadomość z powiadomieniem w aplikacji do obsługi wiadomości błyskawicznych

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

Wiadomości z powiadomieniami są dostarczane do obszaru powiadomień, gdy aplikacja działa w tle. W przypadku aplikacji 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 powiadomieniem znajdziesz w dokumentacji referencyjnej obiektu powiadomienia interfejsu FCM HTTP v1 API.

Wiadomości z danymi

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

Poniższy przykład pokazuje użycie pola danych najwyższego poziomu lub wspólnego pola danych, które jest interpretowane przez klientów na wszystkich platformach odbierają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"
    }
  }
}

Powiadomienia z opcjonalnym ładunkiem danych

Możesz wysyłać powiadomienia zawierające opcjonalny ładunek niestandardowych par klucz-wartość automatycznie lub za pomocą konsoli Firebase. W Kreatorze powiadomień użyj pól Dane niestandardowe w Opcjach zaawansowanych.

Sposób działania aplikacji po otrzymaniu wiadomości zawierających zarówno powiadomienia, jak i ładunki danych, zależy od tego, czy aplikacja działa w tle czy na pierwszym planie, czyli od tego, czy jest aktywna w momencie otrzymania wiadomości.

  • W tle aplikacje otrzymują ładunek powiadomienia w obszarze powiadomień i obsługują ładunek danych tylko wtedy, gdy użytkownik kliknie powiadomienie.
  • Gdy aplikacja działa na pierwszym planie, otrzymuje obiekt wiadomości z dostępnymi obydwoma ładunkami.

Oto komunikat w formacie JSON zawierający zarówno klucz notification, jak i klucz data:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }
}