Wyślij wiadomość testową do aplikacji w tle

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

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

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

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

  1. Zainstaluj aplikację na urządzeniu docelowym i uruchom ją. Na urządzeniach Apple musisz zaakceptować prośbę o zezwolenie na otrzymywanie powiadomień zdalnych.

  2. Upewnij się, że aplikacja działa w tle na urządzeniu.

  3. W konsoli Firebase otwórz stronę Wiadomości.

  4. Jeśli to Twoja pierwsza wiadomość, kliknij Utwórz pierwszą kampanię.

    1. Kliknij kolejno Wiadomości powiadomień FirebaseUtwórz.
  5. W przeciwnym razie na karcie Kampanie kliknij kolejno Nowa kampaniaPowiadomienia.

  6. Wpisz tekst wiadomości. Pozostałe pola są opcjonalne.

  7. W prawym okienku kliknij Wyślij wiadomość testową.

  8. W polu Dodaj token rejestracji FCM wpisz token rejestracji uzyskany w poprzedniej sekcji tego przewodnika.

  9. 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:

  1. getInitialMessage(): jeśli aplikacja jest otwierana z zamkniętego stanu, ta metoda zwraca Future zawierający RemoteMessage. Po wykorzystaniu RemoteMessage zostanie usunięty.
  2. onMessageOpenedApp: Stream, który publikuje RemoteMessage, 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: