Konfigurowanie aplikacji klienckiej Komunikacja w chmurze Firebase (FCM) we Flutter

Wykonaj te czynności, aby skonfigurować klienta FCM w Flutter.

Konfiguracja i wymagania dotyczące konkretnej platformy

Niektóre wymagane kroki zależą od platformy, na którą kierujesz reklamy.

iOS+

Włącz funkcje aplikacji w Xcode

Aby Twoja aplikacja mogła otrzymywać wiadomości, musisz włączyć powiadomienia push 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 Pobieranie w tle i Tryby wykonywania powiadomień w tle dla opcji Powiadomienia zdalne.

Prześlij klucz uwierzytelniania APNs

Zanim zaczniesz korzystać z 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. W swoim projekcie w konsoli Firebase kliknij ikonę koła zębatego, wybierz Ustawienia projektu, a następnie kartę Komunikacja w chmurze.
  2. Kliknij przycisk Prześlij certyfikat obok certyfikatu programistycznego, certyfikatu produkcyjnego lub obu. Trzeba podać co najmniej jedną.
  3. Wybierz plik .p12 dla każdego certyfikatu i podaj hasło (jeśli jest dostępne). Upewnij się, że identyfikator pakietu tego certyfikatu jest zgodny z identyfikatorem pakietu aplikacji. Kliknij Zapisz.

Dostosowywanie metod

Aby korzystać z wtyczki FCM Flutter na urządzeniach Apple, nie możesz wyłączyć przesuwania metod. Jest wymagany, a bez niego kluczowe funkcje Firebase, takie jak obsługa tokenów FCM, nie działają prawidłowo.

Android

Usługi Google Play

Klienty FCM wymagają urządzeń z Androidem 4.4 lub nowszym, na których są też zainstalowane usługi Google Play, lub emulatora Androida 4.4 z interfejsami API Google. Pamiętaj, że nie ograniczasz się do wdrażania aplikacji na Androida przez Sklep Google Play.

Aplikacje korzystające z pakietu SDK Usług Google Play zawsze przed uzyskaniem dostępu do funkcji Usług Google Play powinny sprawdzić, czy na urządzeniu znajduje się zgodny plik APK Usług Google Play. Zalecamy to zrobić w 2 miejscach: w metodzie onCreate() aktywności głównej i w metodzie onResume(). Dzięki sprawdzeniu onCreate() stwierdza, że aplikacji nie będzie można użyć bez pomyślnego sprawdzenia. Kontrola onResume() pozwala upewnić się, że jeśli użytkownik wróci do uruchomionej aplikacji w inny sposób, np. za pomocą przycisku Wstecz, kontrola zostanie przeprowadzona.

Jeśli na urządzeniu nie ma zgodnej wersji Usług Google Play, aplikacja może wywołać metodę GoogleApiAvailability.makeGooglePlayServicesAvailable(), aby umożliwić użytkownikom pobranie Usług Google Play ze Sklepu Play.

Internet

Konfigurowanie danych logowania w przeglądarce w FCM

Interfejs internetowy FCM używa danych uwierzytelniających internetowych zwanych kluczami „Voluntary Application Server Identification” (Voluntary Application Server Identifiecation) (VAPID) – do autoryzowania żądań wysyłania do obsługiwanych usług internetowych. Aby subskrybować powiadomienia push w aplikacji, musisz powiązać parę kluczy z projektem Firebase. Możesz wygenerować nową parę kluczy lub zaimportować istniejącą za pomocą konsoli Firebase.

Generowanie nowej pary kluczy
  1. Otwórz kartę Komunikacja w chmurze w panelu Ustawienia w konsoli Firebase i przewiń do sekcji Konfiguracja internetowa.

  2. Na karcie Certyfikaty Web Push kliknij Wygeneruj parę kluczy. W konsoli pojawi się powiadomienie o wygenerowaniu pary kluczy oraz ciąg klucza publicznego i data dodania.

Importuj istniejącą parę kluczy

Jeśli masz parę kluczy, której używasz już w swojej aplikacji internetowej, możesz zaimportować ją do FCM, by mieć dostęp do istniejących instancji aplikacji przez interfejsy FCM API. Aby zaimportować klucze, musisz mieć dostęp na poziomie właściciela do projektu Firebase. Zaimportuj swój klucz publiczny i prywatny w formacie base64 zakodowanym w bezpieczny sposób przy użyciu adresu URL:

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

  2. Na karcie Certyfikaty Web Push znajdź i wybierz tekst linku „Zaimportuj istniejącą parę kluczy”.

  3. W oknie Importowanie pary kluczy wpisz w odpowiednich polach klucze publiczne i prywatne, a następnie kliknij Importuj. Konsola wyświetli ciąg klucza publicznego i datę dodania.

Więcej informacji o formacie kluczy i ich generowaniu znajdziesz w artykule Klucze serwera aplikacji.

Zainstaluj wtyczkę FCM

  1. Zainstaluj i zainicjuj wtyczki Firebase dla Flutter, jeśli jeszcze ich nie masz.

  2. W katalogu głównym projektu Flutter uruchom to polecenie, aby zainstalować wtyczkę:

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

    flutter run
    

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ć.

Aby pobrać bieżący token rejestracji instancji aplikacji, wywołaj getToken(). Jeśli użytkownik nie wyraził zgody na wyświetlanie powiadomień, ta metoda poprosi o przyznanie uprawnień 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...
}

W przypadku platform internetowych przekaż klucz publiczny VAPID do getToken():

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

Aby otrzymywać powiadomienia po 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 automatycznemu inicjowaniu

Po wygenerowaniu tokena rejestracji FCM biblioteka przesyła do Firebase identyfikator i dane konfiguracji. Jeśli wolisz zapobiec automatycznemu generowaniu tokenów, wyłącz je podczas kompilacji.

iOS

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

FirebaseMessagingAutoInitEnabled = NO

Android

Na urządzeniu z Androidem wyłącz zbieranie danych przez Analytics i automatyczne inicjowanie FCM (musisz wyłączyć obie te wartości), dodając do AndroidManifest.xml te wartości metadanych:

<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 automatyczne inicjowanie FCM w czasie działania

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

await FirebaseMessaging.instance.setAutoInitEnabled(true);

Po ustawieniu ta wartość będzie się utrzymywać w przypadku ponownych uruchomień aplikacji.

Dalsze kroki

Po skonfigurowaniu aplikacji klienckiej możesz zacząć wysyłać wiadomości dodatkowe za pomocą narzędzia do tworzenia powiadomień. Zapoznaj się z sekcją Wysyłanie wiadomości testowej do aplikacji działającej w tle.

Aby dodać do aplikacji inne, bardziej zaawansowane działanie, musisz wdrożyć serwer.

Następnie w aplikacji klienckiej: