Aby rozpocząć korzystanie z komunikacji w chmurze Firebase, zacznij od najprostszego przypadku użycia: wyślij testowe powiadomienie z edytora powiadomień na urządzenie programistyczne, gdy aplikacja działa w tle. Na tej stronie znajdziesz wszystkie kroki, które należy wykonać, od konfiguracji do weryfikacji. Mogą one obejmować czynności, które zostały już przez Ciebie wykonane, jeśli skonfigurujesz aplikację Flutter na potrzeby FCM.
.Instalowanie wtyczki FCM
Zainstaluj i inicjuj pakiety SDK Firebase dla Fluttera (jeśli nie zostało to jeszcze zrobione).
Aby zainstalować w katalogu głównym projektu Flutter wtyczkę, uruchom to polecenie:
flutter pub add firebase_messaging
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 przyznał uprawnień do wyświetlania powiadomień, ta metoda poprosi go o takie uprawnienia. W przeciwnym razie zwraca token lub odrzuca przyszłość z powodu błędu.
final fcmToken = await FirebaseMessaging.instance.getToken();
Wysyłanie testowej wiadomości z powiadomieniem
Zainstaluj aplikację na urządzeniu docelowym i uruchom ją. Na urządzeniach Apple musisz zaakceptować prośbę o zezwolenie na otrzymywanie powiadomień zdalnych.
Upewnij się, że aplikacja działa w tle na urządzeniu.
W konsoli Firebase otwórz stronę Wiadomości.
Jeśli to Twoja pierwsza wiadomość, kliknij Utwórz pierwszą kampanię.
- Kliknij kolejno Wiadomości powiadomień Firebase i Utwórz.
W przeciwnym razie na karcie Kampanie kliknij kolejno Nowa kampania i Powiadomienia.
Wpisz tekst wiadomości. Pozostałe pola są opcjonalne.
W prawym okienku kliknij Wyślij wiadomość testową.
W polu Dodaj token rejestracji FCM wpisz token rejestracji uzyskany w poprzedniej sekcji tego przewodnika.
Kliknij Test.
Po wybraniu opcji Test na urządzeniu docelowym klienta (z aplikacją działającą w tle) powinno pojawić się powiadomienie.
Informacje o dostarczaniu wiadomości do aplikacji znajdziesz na panelu raportowania usługi FCM, który zawiera liczbę wiadomości wysłanych i otwartych na urządzeniach z systemem Apple i Android oraz dane o wyświetleniach (powiadomieniach widzianych przez użytkowników) aplikacji na Androida.
Obsługa interakcji
Gdy użytkownicy klikają powiadomienie, domyślnym działaniem na Androidzie i iOS jest otwarcie aplikacji. Jeśli aplikacja została zamknięta, zostanie uruchomiona, a jeśli działa w tle, zostanie przeniesiona na pierwszy plan.
W zależności od treści powiadomienia możesz chcieć obsłużyć interakcję użytkownika po otwarciu aplikacji. Jeśli na przykład nowa wiadomość na czacie zostanie wysłana za pomocą powiadomienia i użytkownik ją wybierze, możesz otworzyć konkretną rozmowę po otwarciu aplikacji.
Pakiet firebase-messaging
udostępnia 2 sposoby obsługi tej interakcji:
getInitialMessage()
: jeśli aplikacja jest otwierana z zamkniętego stanu, ta metoda zwracaFuture
zawierającyRemoteMessage
. Po wykorzystaniuRemoteMessage
zostanie usunięty.onMessageOpenedApp
:Stream
, który publikujeRemoteMessage
, gdy aplikacja jest otwierana z tła.
Aby zapewnić użytkownikom płynne działanie, musisz uwzględnić oba scenariusze. Przykładowy kod poniżej pokazuje, jak to zrobić:
class Application extends StatefulWidget {
@override
State<StatefulWidget> createState() => _Application();
}
class _Application extends State<Application> {
// In this example, suppose that all messages contain a data field with the key 'type'.
Future<void> setupInteractedMessage() async {
// Get any messages which caused the application to open from
// a terminated state.
RemoteMessage? initialMessage =
await FirebaseMessaging.instance.getInitialMessage();
// If the message also contains a data property with a "type" of "chat",
// navigate to a chat screen
if (initialMessage != null) {
_handleMessage(initialMessage);
}
// Also handle any interaction when the app is in the background via a
// Stream listener
FirebaseMessaging.onMessageOpenedApp.listen(_handleMessage);
}
void _handleMessage(RemoteMessage message) {
if (message.data['type'] == 'chat') {
Navigator.pushNamed(context, '/chat',
arguments: ChatArguments(message),
);
}
}
@override
void initState() {
super.initState();
// Run code required to handle interacted messages in an async function
// as initState() must not be async
setupInteractedMessage();
}
@override
Widget build(BuildContext context) {
return Text("...");
}
}
Sposób obsługi interakcji zależy od konfiguracji aplikacji. Powyższy przykład pokazuje podstawowy sposób użycia właściwości StatefulWidget
.
Dalsze kroki
Wysyłanie wiadomości do aplikacji na pierwszym planie
Gdy uda Ci się wysłać powiadomienia, gdy aplikacja działa w tle, zapoznaj się z artykułem Odbieranie wiadomości w aplikacji Flutter, aby dowiedzieć się, jak wysyłać je do aplikacji działających w tle.
Coś więcej niż wiadomości z powiadomieniami
Aby dodać do aplikacji inne, bardziej zaawansowane funkcje, musisz użyć implementacji na serwerze.
Następnie w kliencie aplikacji: