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

Aby zacząć korzystać z FCM, opracuj najprostszy przypadek użycia: wysyłanie testowe powiadomienie z Kreator 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, które pozwolą Ci to osiągnąć – od konfiguracji po weryfikację. – mogą one obejmować kroki już wykonane, jeśli skonfigurowali aplikację Flutter, w FCM.

Zainstaluj wtyczkę FCM

  1. Instalowanie i zainicjowanie pakietów SDK Firebase na potrzeby Flutter jeśli jeszcze nie zostało to zrobione.

  2. W katalogu głównym projektu Flutter uruchom poniższe polecenie, aby zainstalować wtyczka:

    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ć token rejestracji. Należy go podać w polu w konsoli powiadomień, aby ukończyć ten samouczek; skopiuj token lub bezpiecznie przechowywać po pobraniu.

Aby pobrać bieżący token rejestracji instancji aplikacji, wywołaj getToken() Jeśli zgoda na wyświetlanie powiadomień nie została przyznana, ta metoda i poproś go o zgodę na wyświetlanie powiadomień. W przeciwnym razie zwraca token lub odrzuca przyszłość z powodu błędu.

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

Wyślij powiadomienie testowe

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

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

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

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

    1. Wybierz Powiadomienia Firebase i kliknij Utwórz.
  5. Jeśli nie, na karcie Kampanie wybierz Nowa kampania. a potem Powiadomienia.

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

  7. W panelu po prawej stronie wybierz Wyślij wiadomość testową.

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

  9. Kliknij Przetestuj.

Po wybraniu opcji Przetestuj docelowe urządzenie klienckie (z aplikacją w tła) powinno otrzymać powiadomienie.

Więcej informacji o dostarczaniu wiadomości do aplikacji znajdziesz w Panel raportowania FCM, który rejestruje liczbę wiadomości wysłanych i otwartych na urządzeniach Apple i z Androidem urządzeń oraz dane na temat „wyświetleń”, (powiadomienia wyświetlane przez użytkowników) dla Aplikacje na Androida.

Obsługa interakcji

Po dotknięciu powiadomienia domyślnie iOS to otwarcie aplikacji. Jeśli aplikacja zostanie zakończona, rozpocznie się, a jeśli film będzie w tle, zostanie przesunięty na pierwszy plan.

W zależności od treści powiadomienia możesz chcieć obsługiwać interakcję użytkownika, gdy aplikacja zostanie otwarte. Jeśli na przykład nowa wiadomość czatu została wysłana przy użyciu powiadomienia, a użytkownik ją kliknie, możesz otwórz określony wątek po otwarciu aplikacji.

Pakiet firebase-messaging udostępnia 2 sposoby obsługi tej interakcji:

  1. getInitialMessage(): jeśli aplikacja została otwarta po wyłączeniu, ta metoda zwraca Future zawierający RemoteMessage. Po ich użyciu RemoteMessage zostanie usunięty.
  2. onMessageOpenedApp: Stream, który publikuje RemoteMessage, gdy aplikacja zostanie otwarta z w tle.

Aby zadbać o wygodę użytkowników, weź pod uwagę oba te scenariusze. Przykładowy kod poniżej znajdziesz wskazówki, 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. Przykład powyżej pokazuje podstawowy przykład użycia pola StatefulWidget.

Dalsze kroki

Wysyłaj wiadomości do aplikacji na pierwszym planie

Po pomyślnym wysłaniu powiadomień, gdy aplikacja jest uruchomiona w tle, zobacz Odbieranie wiadomości w aplikacji Flutter aby zacząć wysyłać wiadomości do aplikacji działających na pierwszym planie.

Więcej niż powiadomienia

Aby dodać do aplikacji inne, bardziej zaawansowane funkcje, musisz mieć implementacji serwera.

Następnie w aplikacji klienckiej: