PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Notification Push Androïd : token invalide
Notification Push Androïd : token invalide
Débuté par ChouLAGH, 06 oct. 2017 11:22 - 6 réponses
Membre enregistré
249 messages
Popularité : +1 (1 vote)
Posté le 06 octobre 2017 - 11:22
Bonjour,
Je me permets de republier ce sujet (publier sur forum Windev 22), car je n'ai reçu aucune réponse et je stresse :
===========================================
Bonjour à tous,j'ai regardé le webinaire sur les notifications Push Androïd et j'ai fait, il me semble la même chose.
Mais j'ai toujours un token invalide
======================
contexte
=======================
1) j'ai un webservice windev 22 qui reçoit un token et le stocke dans un fichier HF C/S (Cloud PC Soft)
2) J'ai une appli mobile windev 22 android qui se connecte au serveur Google et reçoit un token par NotifPushActive() et l'envoie à mon webservice
tout ce passe bien car le token est bien dans le fichier.

3) J'ai une application Windev 22 qui appelle le service Web, récupère le token et tente d'envoyer une notification ainsi :

=============================
//
// appeler le WS pour recevoir le token
//
bufTokenDest est un Buffer
tabTokens est un tableau de Buffers
tabTokensInvalides est un tableau de Buffers
bufTokenDest=recupereToken(gsIdWS,gsPwdWS,gscodeEcoleUser,sIdPersonne)
SI bufTokenDest<>"" ALORS
TableauAjoute(tabTokens,bufTokenDest)
// Définition de la notification
MaNotif est une Notification
MaNotif.Titre = SansEspace(SAI_titreNotif)
MaNotif.Message = SansEspace(SAI_messageNotif)
MaNotif.MessageSecondaire =SansEspace(SAI_SousMessageNotif) // Android 4.1
MaNotif.TexteDéroulant = ""
MaNotif.Contenu=""

sRepBool est un booléen
// Envoie la notification
sRepBool=NotifPushEnvoie(MaNotif, tabTokens, gsApiKey, tabTokensInvalides,npeFirebase)
SI sRepBool=Vrai ALORS
Info("Notifiction envoyée")
Erreurinfo()
SINON
Info("Pb Envoi ")
FIN
FIN
==========================
la fonction NotifPushEnvoie() me renvoie vrai mais quand je débogue : le token que j'ai donné se retrouve dans le tableau
tabTokensInvalides !!!!
et Donc aucune notif n'est envoyée !!!!!

Erreurinfo() m'affiche :
Le serveur ne répond pas. Y a t il un serveur HTTP sur la machine cible ?
un problème a été détecté pendant l'envoi d'informations sur la Socket.

===
Précision : je travaille avec la version FireBase de Google. j'ai bien vérifié la clé de l'API. tout semble normal.
====

Si vous pouvez me donner des pistes svp.
je sèche depuis 5 jours

Cordialement

--
Chouaïb

--
Chouaïb
Membre enregistré
637 messages
Popularité : +36 (36 votes)
Posté le 06 octobre 2017 - 13:38
Bonjour Chouaïb,

Pas de panique ! Le déboggage ne doit pas stresser et doit être prit comme un jeu :)
Non, je plaisante. Moi ce qui me stresse c'est les bogues PC Soft !

Dans votre cas, il faudrait vraiment s'assurer que les tokens soient bons, la façon dont vous stocker les tokens utilisateurs (champ texte, memo ?...) forcés en ANSI ou autres (ça peut jouer), si la clé API Google est correcte... Bref, beaucoup de choses.

Le mieux, et de créer un petit projet "test" depuis zéro, qui n'intègre que les fonctionnalités PUSH.
Vraiment, c'est ultra simple et rapide à faire. Merci PC soft :)

Une fois fonctionnel, ça devient facile de comprendre ou est l'erreur dans le projet initial.

Bon courage.

Cdlt,
Eric.

--
Eric DELATTRE
http://www.yoosite.fr

EDIT : Tiens... je m'aperçois que c'est l'application WD qui envoie le push ? Pourquoi n'est pas directement le WS ?
Message modifié, 06 octobre 2017 - 13:44
Membre enregistré
249 messages
Popularité : +1 (1 vote)
Posté le 06 octobre 2017 - 14:53
Merci Eric pour votre réponse.
J'ai essayé au début de faire envoyer le PUSH par le WS mais comme cela ne marchait pas, j'ai essayé par une appli sur PC.
je vais suivre votre conseil :
faire 3 applis ultra simples : mobile, WS et PC pour tester.
Je vais aussi stoker le token du côté smartphone et du côté WS et comparer.
========================
J'AI UN DOUTE
=========================
C'est juste l'appli mobile Androïd qui doit être enregistrée sur la console FireBase ?
ou faut inscrire quelque part aussi l'appli PC ou WS qui envoie le PUSH ?
=========================

Donc je reviendrai ici après les tests.
Merci encore.

--
Chouaïb
Membre enregistré
637 messages
Popularité : +36 (36 votes)
Posté le 06 octobre 2017 - 19:21
Bonsoir,

Juste enregistrer l'application mobile suffit sachant que c'est le web service qui enverra les notifications.
Il faut juste récupérer la bonne clé "serveur" qui sera passée en paramètre à NotifPushEnvoie.

Le plus simple est encore de suivre les directives step by step donnée ici :
http://doc.pcsoft.fr/?1000022215&name=notification_push_configuration_android_firebase

Attention : ne plus suivre les anciennes directives qui figurent encore dans l'aide en ligne !
Mais PC Soft met clairement en garde là-dessus.

Ensuite attention aux tokens utilisateurs. Perso, je les stocke dans un memo.
Ainsi, je m'affranchis d'un potentiel changement de longueur du token, sait-on jamais.

Bon dev,
Eric.

--
Eric DELATTRE
http://www.yoosite.fr
Message modifié, 06 octobre 2017 - 19:23
Membre enregistré
249 messages
Popularité : +1 (1 vote)
Posté le 07 octobre 2017 - 11:53
Bonjour,
Je cherche toujours.
deux questions me viennent :
=====
Eric, vous dites que vous stocker le token dans un memo ? est ce type texte et sous-type memo texte et donc la rubrique a une longueur de 8?
car moi je stocke le token dans une rubrique de type "son,image, binaire" !!!
======
mon appli Mobile à été déployée il y a plusieurs semaines sur la Play store avec une version n et elle n'avait pas à l'époque la notification PUSH à gérer ni donc le fichier .json intégré.

Aujourd'hui je teste avec une version n+1 avec la notification PUSH et un nouveau fichier .json : MAIS Le test ne se fait que sur mon Smartphone
relié à mon PC. est ce que FieBase vérifie les infos sur l'appli de mon Smartphone ou vérifie sur la version ancienne sur le Play Store ?

Merci pour une réponse.
Bon weekend

Cordialement

--
Chouaïb
Membre enregistré
1 603 messages
Popularité : +64 (70 votes)
Posté le 07 octobre 2017 - 14:29
Bonjour

Eric a raison : une des clés c'est bien le token

https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windevmobile/28770-android-firebase-notification-push-transmission-token-28785/read.awp…

Mais j'utilise une chaine binaire de 256 octets mais le champ mémo est à conseiller.
Dans mes tests, le token représente par exemple 152 octets.
A quoi ressemble ton token dans HFSQL ?

--
Cordialement
François

http://intra.fr http://intrasoftware.fr
Membre enregistré
249 messages
Popularité : +1 (1 vote)
Posté le 08 octobre 2017 - 17:49
Bonsoir,
Vous avez raison : c'est le token qui déconnait.
Je l'ai stocké mal dans mon fic HF C/S : rubrique déclarée en "son, image, binaire" mais avec longueur 50.

J'ai remis cette rubrique en "son, image, binaire" longueur 256 et sous-type "chaîne binaire"

Et tout re fonctionne.
Ce qui m'a fait perdre du temps :

J'avais l'habitude d'aller chercher les exemples dans le dossier Windev 22/Exemples/.... et je cherchais l'exemple WS serveur Push
car cet exemple il y a la description du fichier HF
or cet exemple est niché dans Windev 22 Mobile/Exemples/Multiplateforme/Push Mobile/.....

J'ai été persuadé que je ne le trouvais car il faisait partie d'une LST !!!!

Qu'il était doux ce son de la 1ère notification



Encore Merci à Eric et à François.

Cordialement

--
Chouaïb