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

Aby skonfigurować klienta FCM w Flutterze, wykonaj te czynności.

Konfiguracja i wymagania związane z platformą

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

iOS+

Włącz funkcje aplikacji w Xcode

Zanim aplikacja zacznie otrzymywać wiadomości, musisz włączyć powiadomienia push i tryb 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 tlepowiadomienia zdalnetrybie działania w tle.

Przesyłanie klucza uwierzytelniania APNs

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

  1. W konsoli Firebase w projekcie kliknij ikonę koła zębatego, wybierz Ustawienia projektu, a potem kartę Cloud Messaging.
  2. Kliknij przycisk Prześlij certyfikat, aby przesłać certyfikat dewelopera, certyfikat produkcyjny lub oba. Wymagane jest zaznaczenie co najmniej 1 z tych pól.
  3. W przypadku każdego certyfikatu wybierz plik .p12 i podaj hasło (jeśli jest wymagane). Upewnij się, że identyfikator pakietu dla tego certyfikatu jest zgodny z identyfikatorem pakietu Twojej aplikacji. Kliknij Zapisz.

Podmiana metody

Aby używać wtyczki FCM Flutter na urządzeniach Apple, nie możesz wyłączyć metody mieszania. Swizlowanie jest wymagane, ponieważ bez niego kluczowe funkcje Firebase, takie jak obsługa tokena FCMS, nie działają prawidłowo.

Android

Usługi Google Play

Klienci FCM wymagają urządzeń z Androidem 4.4 lub nowszym, na których są też zainstalowane usługi Google Play, lub emulatora z Androidem 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 usługi Play Services SDK powinny zawsze sprawdzać na urządzeniu, czy jest dostępny zgodny pakiet APK Usług Google Play, zanim uzyskają dostęp do funkcji Usług Google Play. Zalecamy wykonanie tego w 2 miejscach: w metodzie onCreate() głównej aktywności oraz w metodzie onResume() tej aktywności. Sprawdzanie w onCreate()zapewnia, że aplikacji nie można użyć bez pomyślnego sprawdzenia. Kontrola w onResume()zapewnia, że jeśli użytkownik wróci do uruchomionej aplikacji za pomocą innych środków, np. przycisku Wstecz, kontrola zostanie przeprowadzona.

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

Sieć

Konfigurowanie danych logowania do interfejsu internetowego w FCM

Interfejs internetowy FCM używa danych logowania do sieci, zwanych „identyfikatorami serwera aplikacji opcjonalnej” lub kluczami „VAPID”, do autoryzowania żądań wysyłania do obsługiwanych usług przesyłania danych po sieci. Aby subskrybować powiadomienia push w aplikacji, musisz powiązać z projektem Firebase parę kluczy. Możesz wygenerować nową parę kluczy lub zaimportować istniejącą za pomocą konsoli Firebase.

Wygeneruj nową parę 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. Konsola wyświetli powiadomienie o wygenerowaniu pary kluczy oraz ciąg znaków klucza publicznego i dodaną datę.

Importuj istniejącą parę kluczy

Jeśli masz parę kluczy, której używasz już w przypadku aplikacji internetowej, możesz ją zaimportować do FCM, aby uzyskać dostęp do dotychczasowych instancji aplikacji internetowej za pomocą interfejsów FCM. 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ę Cloud Messaging w panelu Ustawienia 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 Importuj parę kluczy podaj klucze publiczny i prywatny w odpowiednich polach i kliknij Importuj. W konsoli wyświetlany jest ciąg znaków klucza publicznego i data dodania.

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

Instalowanie wtyczki FCM

  1. Zainstaluj i inicjuj wtyczki Firebase dla Fluttera (jeśli nie zostało to jeszcze zrobione).

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

    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 konkretne urządzenie, musisz znać jego token rejestracji. Aby ukończyć ten samouczek, musisz wpisać token w polu w konsoli powiadomień. Po pobraniu tokena skopiuj go lub zapisz w bezpiecznym miejscu.

Aby pobrać bieżący token rejestracji dla instancji aplikacji, wywołaj funkcję getToken(). Jeśli użytkownik nie wyraził zgody na wyświetlanie powiadomień, ta metoda poprosi go o takie pozwolenie. 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 prześlij klucz publiczny VAPID do:getToken()

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

Aby otrzymywać powiadomienia o aktualizacjach 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.
    });

Zapobieganie automatycznej inicjalizacji

Gdy wygenerowany zostanie token rejestracji FCM, biblioteka prześle identyfikator i dane konfiguracji do Firebase. Jeśli wolisz zapobiec automatycznemu generowaniu tokenów, wyłącz je podczas kompilacji.

iOS

Na urządzeniu z iOS dodaj wartość metadanych do Info.plist:

FirebaseMessagingAutoInitEnabled = NO

Android

Na Androidzie wyłącz zbieranie danych w Analytics i automatyczną inicjalizację FCM (musisz wyłączyć obie te opcje), 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" />

Ponownie włącz automatyczne inicjowanie FCM w środowisku wykonawczym

Aby włączyć automatyczne inicjowanie w przypadku konkretnego wystąpienia aplikacji, wywołaj funkcję setAutoInitEnabled():

await FirebaseMessaging.instance.setAutoInitEnabled(true);

Po ustawieniu ta wartość jest zachowywana po ponownym uruchomieniu aplikacji.

Dalsze kroki

Po skonfigurowaniu aplikacji klienckiej możesz zacząć wysyłać wiadomości do urządzeń użytkowników za pomocą edytora powiadomień. Zobacz Wysyłanie wiadomości testowej do aplikacji działającej w tle.

Aby dodać do aplikacji inne, bardziej zaawansowane funkcje, musisz użyć implementacji na serwerze.

Następnie w kliencie aplikacji: