Skonfiguruj aplikację kliencką Firebase Cloud Messaging na Flutter

Wykonaj poniższe kroki, aby skonfigurować klienta FCM na Flutter.

Konfiguracja i wymagania specyficzne dla platformy

Niektóre wymagane kroki zależą od platformy docelowej.

iOS+

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

Zanim aplikacja będzie mogła zacząć odbierać wiadomości, musisz włączyć powiadomienia wypychane i tryby tła w projekcie Xcode.

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

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ę Cloud Messaging .
  2. Wybierz przycisk Prześlij certyfikat dla certyfikatu programistycznego, certyfikatu produkcyjnego lub obu. Wymagany jest co najmniej jeden.
  3. Dla każdego certyfikatu wybierz plik .p12 i podaj hasło, jeśli istnieje. Upewnij się, że identyfikator pakietu dla tego certyfikatu jest zgodny z identyfikatorem pakietu Twojej aplikacji. Wybierz opcję Zapisz .

Metoda swizzowania

Aby używać wtyczki FCM Flutter na urządzeniach Apple, nie wolno wyłączać zmiany metod. Wymagane jest Swizzling i bez niego kluczowe funkcje Firebase, takie jak obsługa tokenów FCM, nie będą działać poprawnie.

Android

Usługi Google Play

Klienci FCM wymagają urządzeń z systemem Android 4.4 lub nowszym, na których zainstalowane są także usługi Google Play, lub emulatora z systemem Android 4.4 i interfejsami API Google. Pamiętaj, że wdrażanie aplikacji na Androida za pośrednictwem Sklepu Google Play nie jest ograniczone.

Aplikacje korzystające z pakietu SDK Usług Play powinny zawsze sprawdzić, czy na urządzeniu znajduje się zgodny plik APK Usług Google Play, zanim uzyskają dostęp do funkcji Usług Google Play. Zaleca się zrobić to w dwóch miejscach: w metodzie onCreate() głównego działania i w metodzie onResume() . Sprawdzenie onCreate() gwarantuje, że aplikacja nie będzie mogła być używana bez pomyślnego sprawdzenia. Funkcja onResume() gwarantuje, ż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 kompatybilnej 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 internetowe zwane „dobrowolną identyfikacją serwera aplikacji” lub kluczami „VAPID” w celu autoryzacji wysyłania żądań do obsługiwanych usług web push. Aby zasubskrybować aplikację do powiadomień push, musisz powiązać parę kluczy z 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ę Wiadomości w chmurze w panelu Ustawienia konsoli Firebase i przewiń do sekcji Konfiguracja internetowa .

  2. W zakładce Certyfikaty Web Push kliknij opcję Wygeneruj parę kluczy . Konsola wyświetla informację o wygenerowaniu pary kluczy oraz ciąg klucza publicznego i datę dodania.

Zaimportuj istniejącą parę kluczy

Jeśli masz istniejącą parę kluczy, której używasz już w swojej aplikacji internetowej, możesz zaimportować ją do FCM, aby uzyskać dostęp do istniejących instancji aplikacji internetowej 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 zakodowanej w formacie Base64 URL:

  1. Otwórz kartę Wiadomości w chmurze w panelu Ustawienia konsoli Firebase i przewiń do sekcji Konfiguracja internetowa .

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

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

Więcej informacji na temat formatu kluczy i sposobu ich generowania można znaleźć w sekcji Klucze serwera aplikacji .

Zainstaluj wtyczkę FCM

  1. Zainstaluj i zainicjuj wtyczki Firebase dla Flutter, 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 rejestracyjnego

Aby wysłać wiadomość na konkretne urządzenie, musisz znać token rejestracji tego urządzenia. Ponieważ aby ukończyć ten samouczek, konieczne będzie wprowadzenie tokenu w polu w konsoli powiadomień, pamiętaj o skopiowaniu tokenu lub bezpiecznym przechowywaniu go po pobraniu.

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

// You may set the permission requests to "provisional" which allows the user to choose what type
// of notifications they would like to receive once the user receives a notification.
final notificationSettings = await FirebaseMessaging.instance.requestPermission(provisional: true);

// For apple platforms, ensure the APNS token is available before making any FCM plugin API calls
final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
if (apnsToken != null) {
 // APNS token is available, make FCM plugin API requests...
}

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 tokenu rejestracji FCM biblioteka przesyła identyfikator i dane konfiguracyjne do Firebase. Jeśli wolisz zapobiegać automatycznemu generowaniu tokenów, wyłącz automatyczną inicjalizację w czasie kompilacji.

iOS

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

FirebaseMessagingAutoInitEnabled = NO

Android

W systemie Android wyłącz zbieranie Analytics i automatyczną inicjalizację FCM (musisz wyłączyć oba), dodając te wartości metadanych do pliku 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" />

Włącz ponownie automatyczną inicjację FCM w czasie wykonywania

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

await FirebaseMessaging.instance.setAutoInitEnabled(true);

Po ustawieniu ta wartość będzie obowiązywać po ponownym uruchomieniu aplikacji.

Następne kroki

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

Aby dodać inne, bardziej zaawansowane zachowanie do swojej aplikacji, będziesz potrzebować implementacji serwerowej .

Następnie w kliencie aplikacji: