Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Skonfiguruj aplikację kliencką Firebase Cloud Messaging na Flutterze

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Wykonaj poniższe czynności, aby skonfigurować klienta FCM na Flutter.

Konfiguracja i wymagania specyficzne dla platformy

Niektóre z wymaganych kroków zależą od platformy, na którą kierujesz reklamy.

iOS+

Włącz możliwości aplikacji w Xcode

Zanim aplikacja zacznie odbierać wiadomości, musisz włączyć powiadomienia wypychane i tryby w tle w projekcie Xcode.

  1. Otwórz obszar roboczy projektu Xcode ( ios/Runner.xcworkspace ).
  2. Włącz powiadomienia push .
  3. Włącz tryby wykonywania w tle Pobieranie w tle i Powiadomienia zdalne .

Prześlij swój klucz uwierzytelniający APNs

Zanim użyjesz FCM, prześlij swój certyfikat APNs do Firebase. Jeśli nie masz jeszcze certyfikatu APNs, utwórz go w Apple Developer Member Center .

  1. Wewnątrz projektu w konsoli Firebase wybierz ikonę koła zębatego, wybierz Ustawienia projektu , a następnie wybierz kartę Wiadomości w chmurze .
  2. Wybierz przycisk Prześlij certyfikat dla certyfikatu deweloperskiego, certyfikatu produkcyjnego lub obu. Wymagany jest co najmniej jeden.
  3. Dla każdego certyfikatu wybierz plik .p12 i podaj hasło, jeśli jest. Upewnij się, że identyfikator pakietu dla tego certyfikatu jest zgodny z identyfikatorem pakietu Twojej aplikacji. Wybierz Zapisz .

Metoda swizzling

Aby korzystać z wtyczki FCM Flutter na urządzeniach Apple, nie wolno wyłączać zmiany metody. Swizzling jest wymagany, a bez niego kluczowe funkcje Firebase, takie jak obsługa tokenów FCM, nie działają poprawnie.

Android

Usługi Google Play

Klienci FCM wymagają urządzeń z systemem Android 4.4 lub nowszym, na których są również zainstalowane usługi Google Play, lub emulatora z systemem Android 4.4 z interfejsami Google API. Pamiętaj, że nie ograniczasz się do wdrażania aplikacji na Androida za pośrednictwem Sklepu 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ę to zrobić w dwóch miejscach: w metodzie onCreate() głównej aktywności oraz w onResume() . onCreate() zapewnia, że ​​aplikacja nie może być używana bez pomyślnego sprawdzenia. Sprawdzanie w onResume() zapewnia, że ​​jeśli użytkownik powróci do uruchomionej aplikacji w inny sposób, na przykład za pomocą przycisku Wstecz, sprawdzenie będzie 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.

Sieć

Skonfiguruj poświadczenia internetowe za pomocą FCM

Interfejs sieciowy FCM wykorzystuje poświadczenia sieciowe zwane kluczami „dobrowolnej identyfikacji serwera aplikacji” lub „VAPID”, aby autoryzować wysyłanie żądań do obsługiwanych usług web push. Aby zasubskrybować aplikację do powiadomień push, musisz powiązać parę kluczy ze swoim projektem Firebase. Możesz wygenerować nową parę kluczy lub zaimportować istniejącą parę kluczy za pomocą konsoli Firebase.

Wygeneruj nową parę kluczy
  1. Otwórz kartę Cloud Messaging w panelu Ustawienia konsoli Firebase i przewiń do sekcji Konfiguracja sieciowa .

  2. Na karcie Certyfikaty Web Push kliknij Wygeneruj parę kluczy . Konsola wyświetla informację, że para kluczy została wygenerowana i wyświetla ciąg klucza publicznego oraz datę dodania.

Importuj istniejącą parę kluczy

Jeśli masz istniejącą parę kluczy, której już używasz w swojej aplikacji internetowej, możesz ją zaimportować do FCM, aby uzyskać dostęp do istniejących wystąpień aplikacji sieci Web za pośrednictwem interfejsów API FCM. Aby zaimportować klucze, musisz mieć dostęp do projektu Firebase na poziomie właściciela. Zaimportuj swój istniejący klucz publiczny i prywatny w bezpiecznej formie zakodowanego adresu URL base64:

  1. Otwórz kartę Cloud Messaging w panelu Ustawienia konsoli Firebase i przewiń do sekcji Konfiguracja sieciowa .

  2. W zakładce Certyfikaty Web Push znajdź i zaznacz tekst linku „importuj istniejącą parę kluczy”.

  3. W oknie dialogowym Importuj parę kluczy podaj klucze publiczne i prywatne w odpowiednich polach i kliknij Importuj . Konsola wyświetla ciąg klucza publicznego i datę dodania.

Aby uzyskać więcej informacji o formacie kluczy i sposobie ich generowania, zobacz Klucze serwera aplikacji .

Zainstaluj wtyczkę FCM

  1. Zainstaluj i zainicjuj wtyczki Firebase dla Fluttera , jeśli jeszcze tego nie zrobiłeś.

  2. W katalogu głównym projektu Flutter uruchom następujące polecenie, aby zainstalować wtyczkę:

    flutter pub add firebase_messaging
    
  3. Po zakończeniu odbuduj aplikację Flutter:

    flutter run
    

Uzyskaj dostęp do tokena rejestracji

Aby wysłać wiadomość na określone urządzenie, musisz znać token rejestracji tego urządzenia. Ponieważ aby ukończyć ten samouczek, musisz wprowadzić token w polu w konsoli powiadomień, pamiętaj, aby skopiować token lub bezpiecznie go przechowywać po jego pobraniu.

Aby pobrać bieżący token rejestracji dla wystąpienia aplikacji, wywołaj getToken() . Jeśli uprawnienia do powiadomień nie zostały przyznane, ta metoda poprosi użytkownika o uprawnienia do powiadomień. W przeciwnym razie zwraca token lub odrzuca przyszłość z powodu błędu.

final fcmToken = await FirebaseMessaging.instance.getToken();

Na platformach internetowych przekaż swój klucz publiczny VAPID do getToken() :

final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");

Aby otrzymywać powiadomienia o każdej aktualizacji tokena, zasubskrybuj strumień onTokenRefresh :

FirebaseMessaging.instance.onTokenRefresh
    .listen((fcmToken) {
      // TODO: If necessary send token to application server.

      // Note: This callback is fired at each app startup and whenever a new
      // token is generated.
    })
    .onError((err) {
      // Error getting token.
    });

Zapobiegaj automatycznej inicjalizacji

Po wygenerowaniu tokena rejestracji FCM biblioteka przesyła identyfikator i dane konfiguracyjne do Firebase. Jeśli wolisz zapobiegać automatycznemu generowaniu tokenów, wyłącz automatyczną inicjację w czasie kompilacji.

iOS

W systemie iOS dodaj wartość metadanych do pliku Info.plist :

FirebaseMessagingAutoInitEnabled = NO

Android

W systemie Android wyłącz zbieranie danych Analytics i automatyczne inicjowanie 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" />

Ponownie włącz automatyczne inicjowanie FCM w czasie wykonywania

Aby włączyć automatyczne inicjowanie dla określonej instancji aplikacji, wywołaj setAutoInitEnabled() :

await FirebaseMessaging.instance.setAutoInitEnabled(true);

Ta wartość jest zachowywana po ponownym uruchomieniu aplikacji po ustawieniu.

Następne kroki

Po skonfigurowaniu aplikacji klienckiej możesz rozpocząć wysyłanie kolejnych wiadomości za pomocą kompozytora powiadomień . Zobacz Wysyłanie wiadomości testowej do aplikacji działającej w tle .

Aby dodać do aplikacji inne, bardziej zaawansowane zachowanie, potrzebujesz implementacji serwerowej .

Następnie w kliencie aplikacji: