Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Skonfiguruj aplikację kliencką Firebase Cloud Messaging na Androida

Aby napisać aplikację kliencką Firebase Cloud Messaging na Androida, użyj interfejsu API FirebaseMessaging i Android Studio 1.4 lub nowszego z Gradle. W instrukcjach na tej stronie przyjęto, że wykonałeś wszystkie kroki dodawania Firebase do projektu Androida .

Klienci FCM wymagają urządzeń z systemem Android 4.1 lub nowszym, na których jest również zainstalowana aplikacja Sklep Google Play, lub emulator z systemem Android 4.1 z interfejsami API Google. Pamiętaj, że nie jesteś ograniczony do wdrażania aplikacji na Androida za pośrednictwem Sklepu Google Play.

Skonfiguruj zestaw SDK

W tej sekcji omówiono zadania, które mogłeś wykonać, jeśli masz już włączone inne funkcje Firebase dla swojej aplikacji.

Zanim zaczniesz

  • Zainstaluj lub zaktualizuj Android Studio do najnowszej wersji.

  • Upewnij się, że Twój projekt spełnia te wymagania:

    • Docelowy poziom interfejsu API 16 (Jelly Bean) lub nowszy
    • Używa Gradle 4.1 lub nowszego
    • Używa Jetpack (AndroidX) , który obejmuje spełnienie następujących wymagań dotyczących wersji:
      • com.android.tools.build:gradle V3.2.1 lub później
      • compileSdkVersion 28 lub nowsza
  • Skonfiguruj urządzenie fizyczne lub użyj emulatora, aby uruchomić aplikację.
    Pamiętaj, że pakiety SDK Firebase zależne od usług Google Play wymagają na urządzeniu lub emulatorze zainstalowania usług Google Play.

  • Zaloguj się do Firebase, używając swojego konta Google.

Jeśli nie masz jeszcze projektu na Androida i chcesz po prostu wypróbować produkt Firebase, możesz pobrać jeden z naszych przykładów szybkiego startu .

Utwórz projekt Firebase

Zanim dodasz Firebase do swojej aplikacji na Androida, musisz utworzyć projekt Firebase, aby połączyć się z aplikacją na Androida. Odwiedź artykuł Omówienie projektów Firebase, aby dowiedzieć się więcej o projektach Firebase.

Zarejestruj swoją aplikację w Firebase

Aby używać Firebase w swojej aplikacji na Androida, musisz zarejestrować swoją aplikację w projekcie Firebase. Rejestracja aplikacji jest często nazywana „dodawaniem” aplikacji do projektu.

  1. Przejdź do konsoli Firebase .

  2. Na środku strony przeglądu projektu kliknij ikonę systemu Android ( ) lub Dodaj aplikację, aby uruchomić przepływ pracy konfiguracji.

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

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

  5. Kliknij Zarejestruj aplikację .

Dodaj plik konfiguracyjny Firebase

  1. Dodaj plik konfiguracyjny Firebase na Androida do swojej aplikacji:

    1. Kliknij Pobierz google-services.json, aby uzyskać plik konfiguracyjny Firebase dla systemu Android ( google-services.json ).

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

  2. Aby włączyć produkty Firebase w swojej aplikacji, dodaj wtyczkę Google-services do plików Gradle.

    1. W pliku Gradle na poziomie głównym (na poziomie projektu) ( build.gradle ) dodaj reguły, aby uwzględnić wtyczkę Gradle usług Google. Sprawdź, czy masz również repozytorium Google Maven.

      buildscript {
      
        repositories {
          // Check that you have the following line (if not, add it):
          google()  // Google's Maven repository
        }
      
        dependencies {
          // ...
      
          // Add the following line:
          classpath 'com.google.gms:google-services:4.3.5'  // Google Services plugin
        }
      }
      
      allprojects {
        // ...
      
        repositories {
          // Check that you have the following line (if not, add it):
          google()  // Google's Maven repository
          // ...
        }
      }
      
    2. W pliku Gradle modułu (na poziomie aplikacji) (zwykle app/build.gradle ) zastosuj wtyczkę Google Services Gradle:

      apply plugin: 'com.android.application'
      // Add the following line:
      apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
      android {
        // ...
      }
      

Dodaj pakiety SDK Firebase do swojej aplikacji

  1. Korzystając z BoM Firebase dla systemu Android , zadeklaruj zależność dla biblioteki Firebase Cloud Messaging dla systemu Android w pliku Gradle modułu (na poziomie aplikacji) (zwykle app/build.gradle ).

    Aby uzyskać optymalne wrażenia z Firebase Cloud Messaging, zalecamy włączenie Google Analytics w swoim projekcie. Ponadto w ramach konfigurowania Analytics musisz dodać do swojej aplikacji pakiet SDK Firebase dla Google Analytics.

    Jawa

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:27.1.0')
    
        // Declare 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'
    }
    

    Korzystając z BoM Firebase na Androida , Twoja aplikacja będzie zawsze używać zgodnych wersji bibliotek Firebase na Androida.

    (Alternatywnie) Zadeklaruj zależności bibliotek Firebase bez korzystania z BoM

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

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

    dependencies {
        // Declare 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:21.1.0'
        implementation 'com.google.firebase:firebase-analytics:18.0.3'
    }
    

    Kotlin + KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:27.1.0')
    
        // Declare 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-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    Korzystając z BoM Firebase na Androida , Twoja aplikacja będzie zawsze używać zgodnych wersji bibliotek Firebase na Androida.

    (Alternatywnie) Zadeklaruj zależności bibliotek Firebase bez korzystania z BoM

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

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

    dependencies {
        // Declare 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-ktx:21.0.1'
        implementation 'com.google.firebase:firebase-analytics-ktx:18.0.3'
    }
    

  2. Zsynchronizuj aplikację, aby upewnić się, że wszystkie zależności mają wymagane wersje.

Edytuj manifest aplikacji

Dodaj następujące informacje do manifestu swojej aplikacji:

  • Usługa, która rozszerza FirebaseMessagingService . Jest to wymagane, jeśli chcesz obsługiwać dowolne wiadomości poza otrzymywaniem powiadomień w aplikacjach w tle. Aby otrzymywać powiadomienia w aplikacjach opartych na pierwszym planie, odbierać ładunki danych, wysyłać komunikaty nadrzędne itd., Należy rozszerzyć tę usługę.
  • <service
        android:name=".java.MyFirebaseMessagingService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
  • (Opcjonalnie) W składniku aplikacji: elementy metadanych do ustawiania domyślnej ikony i koloru powiadomienia. Android używa tych wartości, gdy wiadomości przychodzące nie mają jawnie ustawionej ikony ani koloru.
  • <!-- Set custom default icon. This is used when no icon is set for incoming notification messages.
         See README(https://goo.gl/l4GJaQ) for more. -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/ic_stat_ic_notification" />
    <!-- Set color used with incoming notification messages. This is used when no color is set for the incoming
         notification message. See README(https://goo.gl/6BKBk7) for more. -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/colorAccent" />
  • (Opcjonalnie) Od Androida 8.0 (poziom API 26) i nowszychkanały powiadomień są obsługiwane i zalecane. FCM zapewnia domyślny kanał powiadomień z podstawowymi ustawieniami. Jeśli wolisz tworzyć i używać własnego kanału domyślnego, ustaw default_notification_channel_id na identyfikator obiektu kanału powiadomień, jak pokazano; FCM użyje tej wartości zawsze, gdy wiadomości przychodzące nie ustawią jawnie kanału powiadomień. Aby dowiedzieć się więcej, zobaczZarządzanie kanałami powiadomień .
  • <meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/default_notification_channel_id" />

Uzyskaj dostęp do tokena rejestracji urządzenia

Podczas początkowego uruchamiania aplikacji FCM SDK generuje token rejestracji dla wystąpienia aplikacji klienckiej. Jeśli chcesz kierować pojedynczych urządzeń lub tworzenie grup urządzeń, trzeba uzyskać dostęp do tego tokena rozszerzając FirebaseMessagingService i przesłanianie onNewToken .

W tej sekcji opisano, jak pobrać token i jak monitorować zmiany w tokenie. Ponieważ token można obrócić po początkowym uruchomieniu, zdecydowanie zaleca się pobranie najnowszego zaktualizowanego tokenu rejestracji.

Token rejestracyjny może ulec zmianie, gdy:

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

Pobierz bieżący token rejestracji

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

Jawa

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();
        }
    });

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()
})

Monitoruj generowanie tokenów

onNewToken zwrotne onNewToken uruchamiane za każdym razem, gdy zostanie wygenerowany nowy token.

Jawa

/**
 * 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(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);
}

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)
}

Po uzyskaniu tokenu możesz wysłać go na serwer aplikacji i przechowywać przy użyciu preferowanej metody.

Sprawdź usługi Google Play

Aplikacje korzystające z zestawu Play Services SDK powinny zawsze sprawdzać urządzenie pod kątem kompatybilnego pakietu APK usług Google Play przed uzyskaniem dostępu do funkcji usług Google Play. Zaleca się to zrobić w dwóch miejscach: w metodzie onCreate() głównego działania oraz w onResume() . Sprawdzanie onCreate() zapewnia, że ​​aplikacja nie może być używana bez pomyślnego sprawdzenia. Sprawdzanie onResume() zapewnia, że ​​jeśli użytkownik powróci do uruchomionej aplikacji w inny sposób, na przykład za pomocą przycisku Wstecz, sprawdzenie jest nadal wykonywane.

Jeśli urządzenie nie ma zgodnej wersji usług Google Play, Twoja aplikacja może wywołać GoogleApiAvailability.makeGooglePlayServicesAvailable() aby umożliwić użytkownikom pobieranie usług Google Play ze Sklepu Play.

Zapobiegaj automatycznej inicjalizacji

Gdy generowany jest token rejestracji FCM, biblioteka przesyła identyfikator i dane konfiguracyjne do Firebase. Jeśli wolisz zapobiec automatycznemu generowaniu tokenów, wyłącz zbieranie Analytics i automatyczną inicjalizację FCM (musisz wyłączyć oba), dodając te wartości metadanych do AndroidManifest.xml :

<meta-data
    android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="firebase_analytics_collection_enabled"
    android:value="false" />

Aby ponownie włączyć automatyczne inicjowanie FCM, wykonaj wywołanie w czasie wykonywania:

Jawa

FirebaseMessaging.getInstance().setAutoInitEnabled(true);

Kotlin + KTX

Firebase.messaging.isAutoInitEnabled = true

Aby ponownie włączyć zbieranie danych Analytics, wywołaj setAnalyticsCollectionEnabled() klasy FirebaseAnalytics . Na przykład:

setAnalyticsCollectionEnabled(true);

Po ustawieniu te wartości są zachowywane po ponownym uruchomieniu aplikacji.

Następne kroki

Po skonfigurowaniu aplikacji klienckiej można rozpocząć wysyłanie dalszych komunikatów za pomocą kompozytora powiadomień . Ta funkcja została przedstawiona w przykładzie szybkiego startu , który można pobrać, uruchomić i przejrzeć.

Aby dodać inne, bardziej zaawansowane zachowanie do swojej aplikacji, możesz zadeklarować filtr intencji i zaimplementować działanie odpowiadające na przychodzące wiadomości. Aby uzyskać szczegółowe informacje, zobacz przewodniki dotyczące wysyłania wiadomości z serwera aplikacji:

Pamiętaj, że aby skorzystać z tych funkcji, potrzebujesz implementacji serwera i procotols serwera (HTTP lub XMPP) lub implementacji zestawu Admin SDK .