Wykonaj poniższe kroki, aby skonfigurować klienta FCM na Flutterze.
Konfiguracja i wymagania specyficzne dla platformy
Niektóre wymagane kroki zależą od docelowej platformy.
iOS+
Włącz możliwości aplikacji w Xcode
Zanim Twoja aplikacja zacznie odbierać komunikaty, musisz włączyć powiadomienia wypychane i tryby tła w swoim projekcie Xcode.
- Otwórz obszar roboczy projektu Xcode (
ios/Runner.xcworkspace
). - Włącz powiadomienia push .
- 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 .
- W swoim projekcie w konsoli Firebase wybierz ikonę koła zębatego, wybierz Ustawienia projektu , a następnie wybierz kartę Cloud Messaging .
- Wybierz przycisk Prześlij certyfikat dla swojego certyfikatu programistycznego, certyfikatu produkcyjnego lub obu. Wymagany jest co najmniej jeden.
- 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 Zapisz .
Zaskakująca metoda
Aby korzystać z wtyczki FCM Flutter na urządzeniach Apple, nie wolno wyłączać przełączania metod. 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 i interfejsami Google API. Pamiętaj, że nie jesteś ograniczony do wdrażania aplikacji na Androida za pośrednictwem Sklepu Google Play.
Aplikacje korzystające z pakietu SDK usług Google Play powinny zawsze sprawdzać urządzenie pod kątem kompatybilnego pakietu APK usług Google Play przed uzyskaniem dostępu do funkcji usług Google Play. Zaleca się, aby zrobić to w dwóch miejscach: w metodzie onCreate()
głównego działania oraz w jego metodzie onResume()
. Zaewidencjonowanie onCreate()
zapewnia, że aplikacja nie może być używana bez pomyślnego sprawdzenia. Sprawdzenie w onResume()
zapewnia, że jeśli użytkownik powróci do działającej aplikacji w inny sposób, na przykład za pomocą przycisku Wstecz, sprawdzenie jest nadal wykonywane.
Jeśli na urządzeniu 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 używa poświadczeń sieciowych zwanych kluczami „Voluntary Application Server Identification” lub „VAPID” w celu autoryzacji wysyłania żądań do obsługiwanych usług web push. Aby subskrybować powiadomienia push w aplikacji, 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
Otwórz kartę Cloud Messaging w okienku Ustawienia konsoli Firebase i przewiń do sekcji Konfiguracja internetowa .
W zakładce Certyfikaty Web Push kliknij Generuj parę kluczy . Konsola wyświetla powiadomienie, że para kluczy została wygenerowana, oraz ciąg klucza publicznego i datę dodania.
Zaimportuj istniejącą parę kluczy
Jeśli masz istniejącą parę kluczy, której już używasz 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 importować 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 adresie URL base64:
Otwórz kartę Cloud Messaging w okienku Ustawienia konsoli Firebase i przewiń do sekcji Konfiguracja internetowa .
W zakładce Certyfikaty Web Push znajdź i zaznacz tekst linku „importuj istniejącą parę kluczy”.
W oknie dialogowym Importuj parę kluczy podaj klucze publiczny i prywatny w odpowiednich polach i kliknij przycisk Importuj . Konsola wyświetla ciąg klucza publicznego i datę dodania.
Aby uzyskać więcej informacji na temat formatu kluczy i sposobu ich generowania, zobacz Klucze serwera aplikacji .
Zainstaluj wtyczkę FCM
Zainstaluj i zainicjuj wtyczki Firebase dla Flutter, jeśli jeszcze tego nie zrobiłeś.
W katalogu głównym projektu Flutter uruchom następujące polecenie, aby zainstalować wtyczkę:
flutter pub add firebase_messaging
Po zakończeniu odbuduj aplikację Flutter:
flutter run
Uzyskaj dostęp do tokena rejestracji
Aby wysłać wiadomość do określonego urządzenia, 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 pobraniu.
Aby pobrać bieżący token rejestracji dla instancji aplikacji, wywołaj funkcję 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 za każdym razem, gdy token zostanie zaktualizowany, 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
Gdy generowany jest token rejestracji FCM, biblioteka przesyła identyfikator i dane konfiguracyjne do Firebase. Jeśli wolisz zapobiec automatycznemu generowaniu tokenów, wyłącz automatyczne inicjowanie 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 automatyczną inicjalizację FCM (musisz wyłączyć obie te wartości), 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 czasie wykonywania
Aby włączyć automatyczne inicjowanie dla określonej instancji aplikacji, wywołaj setAutoInitEnabled()
:
await FirebaseMessaging.instance.setAutoInitEnabled(true);
Ta wartość utrzymuje się po ponownym uruchomieniu aplikacji.
Następne kroki
Po skonfigurowaniu aplikacji klienckiej możesz rozpocząć wysyłanie komunikatów podrzędnych za pomocą narzędzia Notifications Composer . Zobacz Wysyłanie wiadomości testowej do aplikacji działającej w tle .
Aby dodać inne, bardziej zaawansowane zachowanie do aplikacji, potrzebujesz implementacji serwera .
Następnie w kliencie aplikacji: