Wysyłanie wiadomości testowej do aplikacji działającej w tle

Na początek sformułuj najprostszy przypadek użycia: wysłanie wiadomości z powiadomieniem testowym z Narzędzia do tworzenia powiadomień na urządzenie deweloperskie, gdy aplikacja działa w tle. Na tej stronie opisujemy wszystkie kroki potrzebne do osiągnięcia tego celu – od konfiguracji po weryfikację. Mogą one być tam wykonane, jeśli masz skonfigurowaną aplikację kliencką na Androida na potrzeby FCM.

Konfigurowanie pakietu SDK

W tej sekcji omawiamy zadania, które mogły zostać wykonane, jeśli w swojej aplikacji masz już włączone inne funkcje Firebase.

Zanim zaczniesz

  • Zainstaluj lub zaktualizuj Android Studio do najnowszej wersji.

  • Sprawdź, czy projekt spełnia te wymagania (pamiętaj, że niektóre usługi mogą mieć bardziej rygorystyczne wymagania):

    • Jest kierowana na interfejs API na poziomie 19 (KitKat) lub wyższym
    • Korzysta z Androida 4.4 lub nowszego
    • Wykorzystuje pakiet Jetpack (AndroidX), który spełnia te wymagania dotyczące wersji:
      • com.android.tools.build:gradle w wersji 7.3.0 lub nowszej
      • compileSdkVersion w wersji 28 lub nowszej
  • Skonfiguruj urządzenie fizyczne lub użyj emulatora do uruchamiania aplikacji.
    Pamiętaj, że pakiety SDK Firebase bazujące na usługach Google Playwymagają zainstalowania urządzenia lub usług Google Play.

  • Zaloguj się w Firebase, korzystając ze swojego konta Google.

Jeśli nie masz jeszcze projektu na Androida i chcesz wypróbować usługę Firebase, możesz pobrać krótkie wprowadzenie.

Utwórz projekt Firebase

Zanim dodasz Firebase do swojej aplikacji na Androida, musisz utworzyć projekt Firebase, który będzie połączony z tą aplikacją. Więcej informacji o projektach Firebase znajdziesz w artykule Omówienie projektów Firebase.

Zarejestruj aplikację w Firebase

Aby używać Firebase w swojej aplikacji na Androida, musisz ją zarejestrować w projekcie Firebase. Rejestracja aplikacji to często tzw. „dodanie” jej do projektu.

  1. Otwórz konsolę Firebase.

  2. Na środku strony przeglądu projektu kliknij ikonę Androida () lub Dodaj aplikację, aby uruchomić proces konfiguracji.

  3. Wpisz nazwę pakietu aplikacji w polu Nazwa pakietu na Androida.

  4. (Opcjonalnie) Wpisz inne informacje o aplikacji: Nazwa aplikacji i Certyfikat debugowania SHA-1.

  5. Kliknij Zarejestruj aplikację.

Dodaj plik konfiguracji Firebase

  1. Pobierz, a następnie dodaj do aplikacji plik konfiguracyjny Firebase na Androida (google-services.json):

    1. Kliknij Pobierz google-services.json, aby uzyskać plik konfiguracyjny Firebase na Androida.

    2. Przenieś plik konfiguracyjny do katalogu głównego modułu (na poziomie aplikacji) aplikacji.

  2. Aby wartości w pliku konfiguracyjnym google-services.json były dostępne dla pakietów SDK Firebase, potrzebujesz wtyczki do Gradle usług Google (google-services).

    1. W pliku Gradle głównym (na poziomie projektu) (<project>/build.gradle.kts lub <project>/build.gradle) dodaj wtyczkę usług Google jako zależność:

      Kotlin

      plugins {
        id("com.android.application") version "7.3.0" apply false
        // ...
      
        // Add the dependency for the Google services Gradle plugin
        id("com.google.gms.google-services") version "4.4.1" apply false
      }
      

      Groovy

      plugins {
        id 'com.android.application' version '7.3.0' apply false
        // ...
      
        // Add the dependency for the Google services Gradle plugin
        id 'com.google.gms.google-services' version '4.4.1' apply false
      }
      
    2. W pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle) dodaj wtyczkę usług Google:

      Kotlin

      plugins {
        id("com.android.application")
      
        // Add the Google services Gradle plugin
        id("com.google.gms.google-services")
        // ...
      }
      

      Groovy

      plugins {
        id 'com.android.application'
      
        // Add the Google services Gradle plugin
        id 'com.google.gms.google-services'
        // ...
      }
      

Dodaj do aplikacji pakiety SDK Firebase

  1. W pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle) dodaj zależność do biblioteki Komunikacji w chmurze Firebase (FCM) na Androida. Do kontrolowania obsługi wersji biblioteki zalecamy używanie BOM Firebase na Androida.

    Aby w pełni wykorzystać możliwości Firebase Cloud Messaging, włącz Google Analytics w projekcie Firebase i dodaj do aplikacji pakiet SDK Firebase dla Google Analytics.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.0.0"))
    
        // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-messaging")
        implementation("com.google.firebase:firebase-analytics")
    }
    

    Dzięki wykorzystaniu BM od Firebase Android Twoja aplikacja zawsze będzie używała zgodnych wersji bibliotek Firebase na Androida.

    (Alternatywnie) Dodaj zależności biblioteki Firebase bez użycia BoM.

    Jeśli nie chcesz używać BoM Firebase, musisz określić każdą wersję biblioteki Firebase w wierszu zależności.

    Pamiętaj, że jeśli w aplikacji używasz wielu bibliotek Firebase, zdecydowanie zalecamy korzystanie z BoM do zarządzania wersjami biblioteki. Zapewni to zgodność wszystkich wersji.

    dependencies {
        // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-messaging:24.0.0")
        implementation("com.google.firebase:firebase-analytics:22.0.0")
    }
    
    Szukasz modułu biblioteki dotyczącego konkretnego narzędzia Kotlin? Od października 2023 r. (Firebase BoM w wersji 32.5.0) deweloperzy korzystający z Kotlin i Javy mogą korzystać z modułu biblioteki głównej (szczegółowe informacje znajdziesz w odpowiedziach na najczęstsze pytania na temat tej inicjatywy).

  2. Zsynchronizuj projekt na Androida z plikami Gradle.

Dostęp do tokena rejestracji

Aby wysłać wiadomość na konkretne urządzenie, musisz znać jego token rejestracji. Aby ukończyć samouczek, musisz wpisać token w odpowiednim polu w konsoli powiadomień, dlatego pamiętaj, aby go skopiować lub bezpiecznie przechowywać po pobraniu.

Przy pierwszym uruchomieniu aplikacji pakiet SDK FCM generuje token rejestracji dla instancji aplikacji klienckiej. Jeśli chcesz kierować reklamy na pojedyncze urządzenia lub utworzyć grupy urządzeń, musisz uzyskać dostęp do tego tokena, rozszerzając zakres FirebaseMessagingService i zastępując onNewToken.

W tej sekcji dowiesz się, jak pobrać token i monitorować jego zmiany. Ponieważ po pierwszym uruchomieniu token może być rotowany, zdecydowanie zalecamy pobranie najnowszego zaktualizowanego tokena rejestracji.

Token rejestracji może się zmienić, gdy:

  • Aplikacja została przywrócona na nowym urządzeniu
  • Użytkownik odinstaluje lub ponownie zainstaluje aplikację.
  • Użytkownik usuwa dane aplikacji.

Pobieranie bieżącego tokena rejestracji

Gdy musisz pobrać bieżący token, wywołaj FirebaseMessaging.getInstance().getToken():

Kotlin+KTX

FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
    if (!task.isSuccessful) {
        Log.w(TAG, "Fetching FCM registration token failed", task.exception)
        return@OnCompleteListener
    }

    // Get new FCM registration token
    val token = task.result

    // Log and toast
    val msg = getString(R.string.msg_token_fmt, token)
    Log.d(TAG, msg)
    Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
})

Java

FirebaseMessaging.getInstance().getToken()
    .addOnCompleteListener(new OnCompleteListener<String>() {
        @Override
        public void onComplete(@NonNull Task<String> task) {
          if (!task.isSuccessful()) {
            Log.w(TAG, "Fetching FCM registration token failed", task.getException());
            return;
          }

          // Get new FCM registration token
          String token = task.getResult();

          // Log and toast
          String msg = getString(R.string.msg_token_fmt, token);
          Log.d(TAG, msg);
          Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
        }
    });

Monitorowanie generowania tokenów

Wywołanie zwrotne onNewToken jest uruchamiane za każdym razem, gdy generowany jest nowy token.

Kotlin+KTX

/**
 * Called if the FCM registration token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the
 * FCM registration token is initially generated so this is where you would retrieve the token.
 */
override fun onNewToken(token: String) {
    Log.d(TAG, "Refreshed token: $token")

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // FCM registration token to your app server.
    sendRegistrationToServer(token)
}

Java

/**
 * There are two scenarios when onNewToken is called:
 * 1) When a new token is generated on initial app startup
 * 2) Whenever an existing token is changed
 * Under #2, there are three scenarios when the existing token is changed:
 * A) App is restored to a new device
 * B) User uninstalls/reinstalls the app
 * C) User clears app data
 */
@Override
public void onNewToken(@NonNull String token) {
    Log.d(TAG, "Refreshed token: " + token);

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // FCM registration token to your app server.
    sendRegistrationToServer(token);
}

Po uzyskaniu tokena możesz wysłać go na serwer aplikacji i zapisać, używając wybranej metody.

Wyślij testową wiadomość z powiadomieniem

  1. Zainstaluj i uruchom aplikację na urządzeniu docelowym. Na urządzeniach Apple musisz zaakceptować prośbę o zgodę na otrzymywanie zdalnych powiadomień.

  2. Upewnij się, że aplikacja działa w tle na urządzeniu.

  3. W konsoli Firebase otwórz stronę Wiadomości.

  4. Jeśli to Twoja pierwsza wiadomość, kliknij Utwórz pierwszą kampanię.

    1. Wybierz Wiadomości z powiadomień Firebase i kliknij Utwórz.
  5. Jeśli nie, na karcie Kampanie wybierz Nowa kampania, a następnie Powiadomienia.

  6. Wpisz tekst wiadomości. Wszystkie pozostałe pola są opcjonalne.

  7. W prawym okienku wybierz Wyślij wiadomość testową.

  8. W polu Dodaj token rejestracji FCM wpisz token rejestracji uzyskany w poprzedniej sekcji tego przewodnika.

  9. Kliknij Przetestuj.

Gdy klikniesz Przetestuj, na docelowym urządzeniu klienckim (z aplikacją w tle) powinno pojawić się powiadomienie.

Informacje o dostarczeniu wiadomości do aplikacji znajdziesz w panelu raportowania FCM, który zawiera liczbę wysłanych i otwartych wiadomości na urządzeniach Apple i z Androidem, a także dane o „wyświetleniach” (powiadomieniach widocznych dla użytkowników) w aplikacjach na Androida.

Dalsze kroki

Wysyłanie wiadomości do aplikacji działających na pierwszym planie

Jeśli po pomyślnym wysłaniu powiadomień do aplikacji działającej w tle przeczytaj sekcję Odbieranie wiadomości w aplikacji na Androida, aby rozpocząć wysyłanie wiadomości do aplikacji działających na pierwszym planie.

Więcej niż tylko wiadomości z powiadomieniami

Aby dowiedzieć się więcej niż tylko o powiadomieniach i dodać do aplikacji inne, bardziej zaawansowane działania, zapoznaj się z tymi informacjami: