IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Web Java Discussion :

Notification temps réel FCM


Sujet :

Spring Web Java

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Points : 181
    Points
    181
    Par défaut Notification temps réel FCM
    Bonjour,
    pour un projet d'une application Android, j'aimerais que mon serveur Spring puisse envoyer des notifications en temps réel à des devices.
    Après pas mal de recherche, je suis tombé sur Firebase Cloud Message, qui semble correspondre à mes besoins.

    Lorsqu'un utilisateur se connecte, je sauvegarde son token firebase en base, ce qui me permet d'envoyer des notifications depuis mon serveur.
    J'ai fait des tests, et j'obtiens bien des logs qui indiquent que les messages partent.
    Le souci, c'est que les notifications arrivent plusieurs heures après sur les smartphones.

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
                    // test avec un simple Message
                    listToken.stream().forEach(token -> {
                    Message message = Message.builder()
                            .putData("firstName", "James1")
                            .putData("lastName", "Bond1")
                            .setToken(token)
                            .build();
     
                    String response = null;
                    try {
                        response = FirebaseMessaging.getInstance().send(message);
                        System.out.println("Successfully sent message: " + response);
                    } catch (FirebaseMessagingException e) {
                        System.out.println("Error sending Firebase message: " + e.getMessage());
                    }
                });
     
     
                // test Multicast
                MulticastMessage message = MulticastMessage.builder()
                        .putData("firstName", "James")
                        .putData("lastName", "Bond")
                        .addAllTokens(listToken)
                        .build();
     
                // Envoi du message avec registration token et données.
                BatchResponse response = null;
                try {
                    response = FirebaseMessaging.getInstance().sendMulticast(message);
                    System.out.println(response.getSuccessCount() + " messages were sent successfully");
     
                } catch (FirebaseMessagingException e) {
                    System.out.println("Error sending Firebase message: " + e.getMessage());
                }

    Ai-je mal fait quelques choses ?

    D'avance merci et belle journée,

    Bebuck

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Points : 181
    Points
    181
    Par défaut
    Problème résolu, je n'avais pas bien compris le fonctionnement de FCM, la doc n'est pas super claire.
    Mais en fait lorsqu'on utilise les "putData" à la construction du message, ça va créer un message qui sera envoyé à l'application.
    Il faut donc gérer la réception du message dans l'application.

    Pour envoyer une notification, il faut créer une Notification comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                com.google.firebase.messaging.Notification notification = com.google.firebase.messaging.Notification.builder()
                        .setTitle("Mon titre")
                        .setBody("Mon body")
                        .build();
     
                MulticastMessage message = MulticastMessage.builder()
                        .setNotification(notification)
                        .addAllTokens(listToken)
                        .build();

    Et du coup on reçoit bien une notification en temps réel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/10/2021, 18h02
  2. Notification temps réel php
    Par yacne dans le forum Langage
    Réponses: 17
    Dernier message: 25/05/2013, 17h06
  3. [Débutant] notification en temps réel d'insertion linq to sql, c#
    Par zikog dans le forum C#
    Réponses: 3
    Dernier message: 14/09/2011, 10h58
  4. Notifications en temps réel (gmail like)
    Par muad'dib dans le forum ALM
    Réponses: 2
    Dernier message: 16/05/2011, 14h04
  5. Réponses: 2
    Dernier message: 26/08/2007, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo