Envoyer un message de test à une application en arrière-plan

Pour commencer à utiliser FCM, créez le cas d'utilisation le plus simple : envoyer un message de notification de test à partir du compilateur de notifications vers un appareil de développement lorsque l'application est exécutée en arrière-plan sur l'appareil. Cette page liste toutes les étapes à suivre, de la configuration à la validation. Elle peut couvrir des étapes que vous avez déjà effectuées si vous avez configuré une application Flutter pour FCM.

Installer le plug-in FCM

  1. Installez et initialisez les SDK Firebase pour Flutter si ce n'est pas déjà fait.

  2. À partir de la racine de votre projet Flutter, exécutez la commande suivante pour installer le plug-in:

    flutter pub add firebase_messaging
    
  3. Une fois l'opération terminée, recompilez votre application Flutter:

    flutter run
    

Accéder au jeton d'enregistrement

Pour envoyer un message à un appareil spécifique, vous devez connaître le jeton d'enregistrement de cet appareil. Comme vous devrez saisir le jeton dans un champ de la console Notifications pour terminer ce tutoriel, assurez-vous de le copier ou de le stocker de manière sécurisée après l'avoir récupéré.

Pour récupérer le jeton d'enregistrement actuel d'une instance d'application, appelez getToken(). Si l'autorisation de notification n'a pas été accordée, cette méthode demandera à l'utilisateur les autorisations de notification. Sinon, elle renvoie un jeton ou rejette l'avenir en raison d'une erreur.

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

Envoyer un message de notification test

  1. Installez et exécutez l'application sur l'appareil cible. Sur les appareils Apple, vous devez accepter la demande d'autorisation pour recevoir des notifications à distance.

  2. Assurez-vous que l'application s'exécute en arrière-plan sur l'appareil.

  3. Dans la console Firebase, ouvrez la page Messaging (Messagerie).

  4. S'il s'agit de votre premier message, sélectionnez Créer votre première campagne.

    1. Sélectionnez Messages de notification Firebase, puis Créer.
  5. Sinon, dans l'onglet Campagnes, sélectionnez Nouvelle campagne, puis Notifications.

  6. Saisissez le texte du message. Tous les autres sont facultatifs.

  7. Sélectionnez Envoyer un message de test dans le volet de droite.

  8. Dans le champ Ajouter un jeton d'enregistrement FCM, saisissez le jeton d'enregistrement que vous avez obtenu dans une section précédente de ce guide.

  9. Sélectionnez Tester.

Une fois que vous avez sélectionné Test, l'appareil client ciblé (avec l'application en arrière-plan) doit recevoir la notification.

Pour en savoir plus sur la diffusion de messages dans votre application, consultez le tableau de bord de création de rapports FCM, qui enregistre le nombre de messages envoyés et ouverts sur les appareils Apple et Android, ainsi que les données sur les "impressions" (notifications vues par les utilisateurs) pour les applications Android.

Gérer l'interaction

Par défaut, sur Android et iOS, les utilisateurs ouvrent l'application lorsqu'ils appuient sur une notification. Si l'application est arrêtée, elle sera démarrée, et si elle est en arrière-plan, elle sera mise au premier plan.

En fonction du contenu d'une notification, vous pouvez gérer l'interaction de l'utilisateur lorsque l'application s'ouvre. Par exemple, si un nouveau message de chat est envoyé à l'aide d'une notification et que l'utilisateur le sélectionne, vous pouvez ouvrir la conversation spécifique lorsque l'application s'ouvre.

Le package firebase-messaging propose deux méthodes pour gérer cette interaction:

  1. getInitialMessage(): si l'application est ouverte à partir d'un état arrêté, cette méthode renvoie un Future contenant un RemoteMessage. Une fois utilisé, le RemoteMessage sera supprimé.
  2. onMessageOpenedApp: un Stream qui publie un RemoteMessage lorsque l'application est ouverte en arrière-plan.

Pour offrir une expérience fluide à vos utilisateurs, vous devez gérer les deux scénarios. L'exemple de code ci-dessous montre comment procéder :

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("...");
  }
}

La manière dont vous gérez l'interaction dépend de la configuration de votre application. L'exemple ci-dessus montre un exemple de base d'utilisation d'un StatefulWidget.

Étapes suivantes

Envoyer des messages aux applications au premier plan

Une fois que vous avez envoyé des messages de notification lorsque votre application est en arrière-plan, consultez Recevoir des messages dans une application Flutter pour commencer à envoyer des messages aux applications au premier plan.

Aller au-delà des messages de notification

Pour ajouter un comportement plus avancé à votre application, vous devez implémenter le serveur.

Ensuite, dans le client de votre application :