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

Aby zacząć korzystać z FCM, opracuj najprostszy przypadek użycia: wysłanie testowego powiadomienia z kompozytora powiadomień na urządzenie, którego używasz do programowania, gdy aplikacja działa na urządzeniu w tle. Na tej stronie znajdziesz listę wszystkich czynności wymaganych do osiągnięcia tego celu – od konfiguracji po weryfikację. Jeśli masz skonfigurowaną aplikację Flutter na potrzeby FCM, możesz tam też zobaczyć czynności, które zostały już wykonane.

.

Zainstaluj wtyczkę FCM

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

  2. Aby zainstalować w korzeniach projektu Flutter ten komponent, 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 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.

final fcmToken = await FirebaseMessaging.instance.getToken();

Wysyłanie testowego powiadomienia

  1. Zainstaluj i uruchom aplikację na urządzeniu docelowym. 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ę Komunikacja.

  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 wybrane urządzenie klienta (z aplikacją działającą w tle) powinno otrzymać 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 wyślesz powiadomienia, gdy aplikacja działa w tle, zapoznaj się z sekcją Odbieranie wiadomości w aplikacji Flutter, aby zacząć wysyłać wiadomości do aplikacji działających na pierwszym planie.

Coś więcej niż wiadomości z powiadomieniami

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

Następnie w aplikacji klienckiej: