PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Windev 2024 - NotifPushEnvoie vers Android
Windev 2024 - NotifPushEnvoie vers Android
Débuté par Sylvain LAFFONT, 26 mar. 2024 17:43 - 4 réponses
Membre enregistré
12 messages
Posté le 26 mars 2024 - 17:43
Bonjour,
J'utilise depuis plusieurs années la fonction NotifPushEnvoie avec comme "plateforme" npeFirebase.
Google m'ayant informé de l'abandon de l'authentification par apikey le 20 juin 2024, j'avais planifié une migration sur Windev 2024 et la modification de NotifPushEnvoie avec la "plateforme" npeFirebaseCM_v1.

Seulement impossible de faire marcher les notifications, la fonction de WinDev ne me renvois aucune erreur et considère que l'envoi a été réalisé.

J'ai donc essayé en C# (avec succès) pour vérifier que le problème ne se situait pas côté paramétrage de Firebase.

J'ai simplifié au maximum le code de la notification sans plus de succès, le code ne se résume plus qu'à ces quelques lignes :
invalidToken est un tableau de chaîne
authConfigJson est une chaîne // contient les informations d'authentification du fichier téléchargé sur la console firebase
tokens est un tableau de chaîne // alimenté par une requête
notif est une Notification
notif..Titre = "Test"
notif..Message = "Corps message"
SI PAS NotifPushEnvoie(notif,tokens,authConfigJson,invalidToken,npeFirebaseCM_v1) ALORS
ErreurDéclenche(100,ErreurInfo)
RENVOYER Faux
FIN



En modifiant le "project_id" du fichier json, Windev me remonte bien une erreur, donc j'ai l'impression que l'authentification se déroule correctement mais que l'envoi de la notification ne se fait pas correctement (https://fcm.googleapis.com/v1/projects/xxxx/messages:send).

J'aimerais donc savoir si quelqu'un parmi vous a réussi à utiliser la fonction NotifPushEnvoie avec npeFirebaseCM_v1 ?

Cordialement.
Message modifié, 26 mars 2024 - 17:44
Membre enregistré
120 messages
Posté le 26 mars 2024 - 18:49
Bonjour,
J'utilise npeFirebaseCM_V1 (API Firebase Cloud Messaging V1).
Je te confirme que cela fonctionne sous Windev 28 (pas encore testé sous 2024)

Utilises-tu le nouveau fichier FirebaseCloudMessagingV1.json ? (et pas l'ancien google-services.json)
Le nouveau doit contenir une clé privée :
"private_key_id": xxxxxxxxxxxxxxxxxx",
"private_key": "-----BEGIN PRIVATE KEY-----
Cela dit, si ça fonctionne en C#, je suppose que c'est le cas

En revanche, je vois que tu déclares des tableaux de chaines pour stoker les tokens. Il est préférable d'utiliser des tableaux de buffer.

Fabrice
Message modifié, 26 mars 2024 - 18:52
Membre enregistré
12 messages
Posté le 27 mars 2024 - 15:55
Bonjour Fabrice,
Merci pour cette réponse, au moins je sais que ça marche !
Pour répondre à votre question oui j'utilise bien le fichier json spécifique à l'authentification (celui généré dans les comptes de services), avant c'était une simple ApiKey.
Du coup j'ai modifié pour des tableaux de buffers (même si ça marchait bien avant en npeFirebase) mais sans succès.
Puis j'ai testé sous windev 28 toujours le même problème.
J'ai donc essayé la nouvelle fonction NotifPushEnvoieAbonné et celle-ci marche sans problème.

Je décide donc de faire un test avec une nouvelle appli Android que j'ajoute dans le même projet Firebase et là ça fonctionne...
Je remarque que les tokens générés pour l'application de test sont plus long que ceux de mon application (163 au lieu de 152 caractères).

Je re-re-re test avec mon application et là ça marche... à ne rien y comprendre..., alors certes le fichier google-services.json a évolué car maintenant j'ai 2 clients, un pour chacune de mes applications, mais par contre google a ajouté une api_key supplémentaire même sur mon ancien client.
Et surtout ça marchait parfaitement bien en c#...

Je vais continuer à chercher car même si ça marche je ne comprend pas pourquoi.... L'idéal aurait été de supprimer mon application du projet Firebase pour la recréer , mais je ne peux le faire qu'au moment où je vais déployer une nouvelle version de l'application Android..

Cordialement.
Membre enregistré
120 messages
Posté le 27 mars 2024 - 17:00
Bonjour Sylvain,

Juste pour info :
Lorsque je suis passé de npeFirebase à npeFirebaseCM_v1, les notifications n'ont pas fonctionné instantanément.
Il a fallu attendre qu'un nouveau token soit transmis à l'application

Normalement, dans ton appli tu doit avoir ceci dans le code d'initialisation :
SI ExeInfo(exeLancement)<>exeNotificationPush ALORS NotifPushActive(ActiveNotifPush)

Il faut vérifier si le token a changé dans la fonction ActiveNotifPush() et le cas échéant le mettre à jour sur ton serveur qui est chargé d'envoyer les notifications push

PS : Effectivement les nouveaux tokens sont plus longs (163 octets)

Fabrice
Membre enregistré
251 messages
Popularité : +1 (1 vote)
Posté le 28 mars 2024 - 11:10
Bonjour,
voir ma récente vidéo sur le sujet :


--
Chouaïb