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

Aby zacząć korzystać z FCM, opracuj najprostszy przypadek użycia: wysłanie testowego powiadomienia z komponentu powiadomień na urządzenie, którego używasz do programowania, gdy aplikacja działa na urządzeniu w tle. Na tej stronie znajdziesz listę wszystkich czynności wymaganych do osiągnięcia tego celu – od konfiguracji po weryfikację – może ona obejmować czynności, które zostały już wykonane, jeśli masz skonfigurowaną aplikację kliencką na Androida dla FCM.

Konfigurowanie pakietu SDK

W tej sekcji znajdziesz zadania, które możesz wykonać, jeśli masz już włączone inne funkcje Firebase w swojej aplikacji.

Zanim zaczniesz

  • Zainstaluj lub zaktualizuj Android Studio do najnowszej wersji.

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

    • Dotyczy interfejsu API na poziomie 19 (KitKat) lub wyższym
    • ma Androida 4.4 lub nowszego,
    • Korzysta z Jetpack (AndroidX), który obejmuje te wymagania wersji:
      • com.android.tools.build:gradle w wersji 7.3.0 lub nowszej
      • compileSdkVersion 28 lub nowsze
  • Aby uruchomić aplikację, skonfiguruj urządzenie fizyczne lub użyj emulatora.
    Pamiętaj, że pakiety SDK Firebase zależne od Usług Google Play wymagają zainstalowania na urządzeniu lub emulatorze Usług Google Play.

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

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

Tworzenie projektu Firebase

Zanim dodasz Firebase do aplikacji na Androida, musisz utworzyć projekt Firebase, który będzie połączony z aplikacją na Androida. 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 często nazywa się „dodaniem” jej do projektu.

  1. Otwórz konsolę Firebase.

  2. Aby uruchomić przepływ pracy konfiguracji, na środku strony przeglądu projektu kliknij ikonę Androida () lub Dodaj aplikację.

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

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

  5. Kliknij Zarejestruj aplikację.

Dodaj plik konfiguracji Firebase

  1. Pobierz i dodaj do swojej 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 module (poziom aplikacji) aplikacji.

  2. Aby udostępnić wartości z pliku konfiguracyjnego google-services.json pakietom SDK Firebase, potrzebujesz wtyczki usług Google do Gradle (google-services).

    1. W pliku Gradle na poziomie 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. Do 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 pakiety SDK Firebase do swojej aplikacji

  1. W pliku Gradle (na poziomie modułu) modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle) dodaj zależność z biblioteką Firebase Cloud Messaging na Androida. Do kontrolowania obsługi wersji biblioteki zalecamy używanie funkcji Firebase Android BoM.

    Aby zapewnić optymalne działanie Komunikacji w chmurze Firebase, 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 użyciu BoM Firebase Android BoM Twoja aplikacja zawsze używa zgodnych wersji bibliotek Firebase na Androida.

    (Alternatywnie) Dodawanie zależności bibliotek Firebase bez korzystania z BM

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

    Pamiętaj, że jeśli w swojej aplikacji używasz wielu bibliotek Firebase, zdecydowanie zalecamy korzystanie z BoM do zarządzania wersjami bibliotek. Dzięki temu będziesz mieć pewność, że wszystkie wersje są zgodne.

    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 korzystającego z usługi Kotlin? Od października 2023 r. (Firebase BoM 32.5.0) zarówno deweloperzy aplikacji Kotlin, jak i języki Java mogą korzystać z modułu biblioteki głównej (więcej informacji znajdziesz w odpowiedziach na najczęstsze pytania o tę inicjatywę).

  2. Zsynchronizuj swój projekt na Androida z plikami Gradle.

Dostęp do tokena rejestracji

Aby wysłać wiadomość na określone urządzenie, musisz znać jego token rejestracji. Aby ukończyć ten samouczek, musisz wpisać token w polu w konsoli powiadomień, dlatego po pobraniu musisz go skopiować lub bezpiecznie przechowywać.

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.

Z tej sekcji dowiesz się, jak pobrać token i jak monitorować zmiany w tokenie. Ponieważ token może zostać poddany rotacji po pierwszym uruchomieniu, zdecydowanie zalecamy pobranie najnowszego zaktualizowanego tokena rejestracji.

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

  • Aplikacja zostanie przywrócona na nowym urządzeniu
  • Użytkownik odinstalowuje lub ponownie instaluje aplikację.
  • Użytkownik czyści dane aplikacji.

Pobierz bieżący token rejestracji

Aby 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 po każdym wygenerowaniu nowego tokena.

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ć, korzystając z preferowanej metody.

Wyślij powiadomienie testowe

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

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

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

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

    1. Wybierz Powiadomienia Firebase i kliknij Utwórz.
  5. Jeśli nie, na karcie Kampanie wybierz Nowa kampania, a potem Powiadomienia.

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

  7. W panelu po prawej stronie 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, powiadomienie powinno dotrzeć do docelowego urządzenia klienckiego (z aplikacją w tle).

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

Dalsze kroki

Wysyłaj wiadomości do aplikacji na pierwszym planie

Gdy wyślesz powiadomienia, gdy aplikacja działa w tle, przeczytaj artykuł Odbieranie wiadomości w aplikacji na Androida, aby zacząć wysyłać wiadomości do aplikacji działających na pierwszym planie.

Więcej niż powiadomienia

Jeśli chcesz wyjść poza powiadomienia i dodać do aplikacji inne, bardziej zaawansowane funkcje, przeczytaj te artykuły: