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