Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Skonfiguruj aplikację kliencką Firebase Cloud Messaging na Androida

Aby napisać aplikację kliencką Firebase Cloud Messaging Android, użyj FirebaseMessaging API i Android Studio 1.4 lub wyższej z Gradle. Instrukcje zawarte w tej stronie zakładamy, że masz ukończone kroki do dodawania Firebase do projektu Android .

Klienci FCM wymagają urządzeń z systemem Android 4.1 lub nowszym, które mają również zainstalowaną aplikację Sklep Google Play, lub emulatora z systemem Android 4.1 z interfejsami Google API. Pamiętaj, że nie ograniczasz się do wdrażania aplikacji na Androida za pośrednictwem Sklepu Google Play.

Skonfiguruj pakiet SDK

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

Zanim zaczniesz

  • Zainstalować lub zaktualizować Androida Studio do jego najnowszej wersji.

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

    • Targets API level 16 (Jelly Bean) lub wyższy
    • Używa Androida 4.1 lub nowszego
    • Używa Jetpack (AndroidX) , która obejmuje spełnienia tych wymagań Wersja:
      • com.android.tools.build:gradle V3.2.1 lub później
      • compileSdkVersion 28 lub później
  • Konfigurowanie urządzenia fizycznego lub użyć emulatora , aby uruchomić aplikację.
    Zauważ, że Firebase SDK z uzależnienia od usług Google Play wymagają urządzenia lub emulatora mieć zainstalowane usługi Google Play.

  • Zarejestruj się Firebase za pomocą konta Google.

Jeżeli nie masz jeszcze projekt Android i po prostu chcą wypróbować Firebase produkt można pobrać jeden z naszych próbek QuickStart .

Utwórz projekt Firebase

Zanim dodasz Firebase do swojej aplikacji na Androida, musisz utworzyć projekt Firebase, aby połączyć się z aplikacją na Androida. Wizyta Zrozum Firebase Projekty aby dowiedzieć się więcej o projektach Firebase.

Zarejestruj swoją aplikację w Firebase

Aby korzystać z Firebase w 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. W środku strony głównej projektu kliknij ikonę Android ( ) lub Dodaj aplikację, aby uruchomić przepływ pracy instalacji.

  3. Wpisz nazwę pakietu aplikacji w polu Nazwa pakietu Android.

  4. (Opcjonalnie) Wprowadź inne informacje APL: App nick i Debug podpisanie certyfikatu SHA-1.

  5. Kliknij Register aplikację.

Dodaj plik konfiguracyjny Firebase

  1. Dodaj plik konfiguracyjny Firebase Android do swojej aplikacji:

    1. Kliknij Pobierz Google-services.json aby uzyskać plik konfiguracyjny Firebase 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, dodać google-usług plugin do Gradle plików.

    1. W swoim głównym poziomie (projekt podstawowy) Plik Gradle ( build.gradle ), dodać zasady obejmują wtyczki Google Services Gradle. Sprawdź również, czy masz repozytorium Maven firmy Google.

      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.10'  // Google Services plugin
        }
      }
      
      allprojects {
        // ...
      
        repositories {
          // Check that you have the following line (if not, add it):
          google()  // Google's Maven repository
          // ...
        }
      }
      
    2. W module (app szczebla) Gradle plik (zazwyczaj app/build.gradle ), stosować wtyczki 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. Korzystanie z Firebase Android Bom , deklarują zależność dla biblioteki Firebase Cloud Messaging Android w module (app szczebla) Gradle plik (zazwyczaj app/build.gradle ).

    Dla optymalnego doświadczenia z Firebase Cloud Messaging, zalecamy umożliwiając Google Analytics w projekcie Firebase i dodanie Firebase SDK Google Analytics do swojej aplikacji.

    Jawa

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.2')
    
        // 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 Firebase Bom Android , aplikacja będzie zawsze używać kompatybilne wersje bibliotek Firebase Android.

    (Alternatywna) Stwierdzenie Firebase zależności biblioteki bez użycia BOM

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

    Należy pamiętać, że w przypadku korzystania z wielu bibliotek Firebase w swojej aplikacji, zalecamy korzystania z BOM do zarządzania wersjami biblioteki, co gwarantuje, że wszystkie wersje są kompatybilne.

    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:22.0.0'
        implementation 'com.google.firebase:firebase-analytics:19.0.2'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.2')
    
        // 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 Firebase Bom Android , aplikacja będzie zawsze używać kompatybilne wersje bibliotek Firebase Android.

    (Alternatywna) Stwierdzenie Firebase zależności biblioteki bez użycia BOM

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

    Należy pamiętać, że w przypadku korzystania z wielu bibliotek Firebase w swojej aplikacji, zalecamy korzystania z BOM do zarządzania wersjami biblioteki, co gwarantuje, że wszystkie wersje są kompatybilne.

    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:22.0.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:19.0.2'
    }
    

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

Edytuj manifest aplikacji

Dodaj następujące elementy do manifestu aplikacji:

  • Usługa, która rozciąga FirebaseMessagingService . Jest to wymagane, jeśli chcesz wykonywać dowolną obsługę wiadomości poza otrzymywaniem powiadomień w aplikacjach w tle. Aby otrzymywać powiadomienia w aplikacjach na pierwszym planie, otrzymywać ładunek danych, wysyłać wiadomości upstream itd., musisz 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 umożliwiające ustawienie domyślnej ikony i koloru powiadomienia. System Android używa tych wartości, gdy wiadomości przychodzące nie ustawiają jawnie 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) z Android 8.0 (poziom API 26) i wyższe, kanały powiadomień są obsługiwane i zalecane. FCM zapewnia domyślny kanał powiadomień z podstawowymi ustawieniami. Jeśli wolisz, aby utworzyć i używać własnego domyślnego kanału, zestaw default_notification_channel_id do identyfikatora swojego obiektu kanału powiadomień, jak pokazano; FCM użyje tej wartości, gdy wiadomości przychodzące nie ustawiają jawnie kanału powiadomień. Aby dowiedzieć się więcej, zobacz Zarządzanie kanałów 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 zestaw 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że zostać obrócony po pierwszym 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 usuwa dane aplikacji.

Pobierz aktualny token rejestracji

Kiedy trzeba pobrać bieżący znak, zadzwoń 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

W onNewToken pożary wywołania zwrotnego, gdy nowy token wygenerowany.

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 tokena możesz wysłać go na serwer aplikacji i przechowywać przy użyciu preferowanej metody.

Sprawdź usługi Google Play

Aplikacje korzystające z pakietu SDK Usług Play powinny zawsze sprawdzać urządzenie pod kątem zgodnego pakietu APK Usług Google Play przed uzyskaniem dostępu do funkcji Usług Google Play. Zaleca się, aby to zrobić w dwóch miejscach: w głównej działalności za onCreate() metody, aw jego onResume() metody. Kontrolę w onCreate() zapewnia, że aplikacja nie może być stosowany bez udanego wyboru. Kontrolę w onResume() zapewnia, że jeśli użytkownik powraca do uruchomionej aplikacji za pośrednictwem innych środków, takich jak poprzez przycisk wstecz, kontrola jest nadal wykonywana.

Jeśli urządzenie nie posiada kompatybilną wersję usługi Google Play, aplikacja może wywołać GoogleApiAvailability.makeGooglePlayServicesAvailable() , aby umożliwić użytkownikom pobrać z usługi Google Play w Sklepie Play.

Zapobiegaj automatycznej inicjalizacji

Po wygenerowaniu tokena rejestracji FCM biblioteka przesyła identyfikator i dane konfiguracyjne do Firebase. Jeśli wolisz, aby zapobiec tokena autogeneration, wyłącz kolekcję Analytics i FCM auto inicjalizacji (należy wyłączyć oba) dodając te wartości metadanych do swojej 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ć kolekcję Analytics, zadzwoń setAnalyticsCollectionEnabled() sposobu FirebaseAnalytics klasie. Na przykład:

setAnalyticsCollectionEnabled(true);

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

Następne kroki

Po aplikacji klient jest skonfigurowany, jesteś gotowy, aby rozpocząć wysyłanie wiadomości downstream z kompozytorem powiadomień . Ta funkcjonalność jest wykazać w próbie szybkiego startu , który można pobrać, uruchomić, a opinię.

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:

Należy pamiętać, że aby skorzystać z tych funkcji, musisz się implementację serwera i procotols serwerów (HTTP lub XMPP), lub realizację Admin SDK .