Bonjour à tous,
Je développe un projet de notification push en version WM28 UPDATE 5. J'avoue que c'est la première fois que je fais du PUSH.
J'ai utilisé comme base l'exemple fourni par Windev.
Mon projet comprend donc 2 applications Android, une qui envoie et l'autre qui reçoit les push et un service web SOAP. L'enregistrement des tokens est correct. J'utilise le npeFirebaseCM_v1 de chez Google, le seul disponible aujourd'hui. J'ai déclaré mon application sur Firebase et j'ai récupéré les 2 fichiers JSON.
Mais, le NotifPushEnvoie me renvoie cette erreur :
errcomplet :
erreur lors de l'appel au webservice :
- Appel WL: - Fonction<>
- Niveau : erreur non fatale
- Message d’erreur système :
- La vérification du certificat SSL ou de la clé SSH a échoué.
- Que s’est il passé ?
- Une erreur système a été détectée pendant l’envoi de la requête HTTP
J'ai fait des petits tests avec ce code :
cReq est un httpRequête
cReq.URL = "https://oauth2.googleapis.com/token"
cRep est un httpRéponse = HTTPEnvoie(cReq)
SI ErreurDétectée ALORS
Erreur("OAUTH ERROR = " + ErreurInfo(errComplet))
SINON
Info("OAUTH ok")
FIN
Le retour est "OAUTH ok"
Et avec ce code :
cMaRequête est un httpRequête
cMaRequête.URL = "https://www.google.com"
cMaRéponse est un httpRéponse = HTTPEnvoie(cMaRequête)
SI ErreurDétectée ALORS
Erreur(ErreurInfo(errComplet))
SINON
fAjouteTexte("C:\Temp\http.txt",cMaRéponse.Contenu)
FIN
La encore il n'y a pas d'erreur dans le retour.
Voici mon code webservice :
Procedure EnvoieAndroid(sMessage est une chaîne, sContenu est une chaîne, sTitre est une chaîne, sTexteDeroulant est une chaîne, bVibration est un booléen, ...
bLED est un booléen, bSupprimable est un booléen, bApplicationActive est un booléen, Site_ID est un entier sur 8 octets) : chaîne
tabIdentifiantsAEnvoyer est un tableau de Buffers
tabIdentifiantsAEnvoyerTemp est un tableau de Buffers
ListeReponse est un tableau de Buffer
bufIdentifiant est un Buffer
tabTokensInvalides est un tableau de Buffer
nNbTokensInvalides est un entier
SI gsCléAPIAndroid = "" ALORS
RENVOYER "Veuillez saisie une clé Google API"
FIN
sCheminFichierJson = fRepExe() + ["\"] + "Config\push-assistant-firebase-adminsdk-fbsvc-a64f49af70.json"
SI fFichierExiste(sCheminFichierJson) ALORS
SI fChargeTexte(sCheminFichierJson) = Faux ALORS
RENVOYER "Impossible de charger le json sdk"
SINON
sContenuJson = fChargeTexte(sCheminFichierJson)
SI sContenuJson = "" ALORS
RENVOYER "Json SDK vide. [%sCheminFichierJson%]"
SINON
sContenuJson = Remplace(sContenuJson, "\n", RC)
FIN
FIN
SINON
RENVOYER "Le fichier de configuration Firebase AdminSDK est introuvable."
FIN
ListeReponse = ListeIdentifiantsAndroid(Site_ID)
SI ListeReponse..Occurrence > 0 ALORS
POUR i = 1 _À_ ListeReponse..Occurrence
bufIdentifiant = ListeReponse[i]
TableauAjoute(tabIdentifiantsAEnvoyer,bufIdentifiant)
FIN
POUR i = 0 _À_ (tabIdentifiantsAEnvoyer..Occurrence / 1000)
nDebut est un entier = i * 1000 + 1
nFin est un entier = (i + 1) * 1000
SI nFin > tabIdentifiantsAEnvoyer..Occurrence ALORS
nFin = tabIdentifiantsAEnvoyer..Occurrence
FIN
TableauCopie(tabIdentifiantsAEnvoyer,tabIdentifiantsAEnvoyerTemp,nDebut,nFin - nDebut + 1)
maNotif est un Notification
maNotif.Message = sMessage
maNotif.Contenu = sContenu
maNotif.Titre = sTitre
maNotif.Son = "son_notif.mp3"
maNotif.Icone = "Proteck-Congo.ico"
maNotif..Groupe = "Push"
maNotif.TexteDéroulant = sTexteDeroulant
maNotif.Vibration = bVibration
maNotif.AffichageLED = bLED
maNotif.Supprimable = bSupprimable
maNotif.ActiveApplication = bApplicationActive
SI PAS NotifPushEnvoie(maNotif,tabIdentifiantsAEnvoyerTemp,sContenuJson,tabTokensInvalides,npeFirebaseCM_v1) ALORS
RENVOYER "Erreur notif :" + RC + ErreurInfo(errComplet)
SINON
SI tabTokensInvalides..Occurrence > 0 ALORS
nNbTokensInvalides += tabTokensInvalides..Occurrence
SupprimeIdentifiantsAndroid(tabTokensInvalides)
FIN
FIN
FIN
SINON
RENVOYER "Aucun identifiant stocké sur le serveur." + "Aucune notification envoyée."
FIN
RENVOYER ""
Et voici le code côté Android:
Procedure PbASignaler(LOCAL nIDPbasignaler est un entier sur 8 octets)
dhDateHeure est une DateHeure = DateHeureSys()
slepb, slecas, nomsite sont des chaînes
WBSVC_SOAP_PUSH..Adresse = "https://ADRESSE_WEB/WBSVC_SOAP_PUSH_WEB/awws/WBSVC_SOAP_PUSH.awws"
SI Ping("8.8.8.8",300) = Vrai ALORS
HLitRecherche(problemeasignaler,IDProblemeASignaler,nIDPbasignaler)
SI HTrouve(problemeasignaler) = Vrai ALORS
slepb = problemeasignaler.Description
FIN
HLitRecherche(sites,IDSite,nIDSite)
SI HTrouve(sites) = Vrai ALORS
nomsite = sites.Nom
FIN
AjoutInformation(DateHeureSys(),"Assistant APS","Rondier " + nomsite,45,nIDSite,gnIDAgent,nIDClient,1,"[%slepb%]" + RC + "Merci d'informer le client dans les plus brefs délais.")
rondesdédiéesenlive.IDClient = nIDClient
rondesdédiéesenlive.IDSite = nIDSite
rondesdédiéesenlive.IDAgent = gnIDAgent
rondesdédiéesenlive.Description = slecas
rondesdédiéesenlive.DateHeurePT = dhDateHeure
HAjoute(rondesdédiéesenlive,hEcritureDéfaut)
SELON nIDPbasignaler
CAS = 1
slecas ="EAUMOINSQUART"
CAS = 2
slecas = "GSLMOINSQUART"
CAS = 3
slecas = "GEHS"
CAS = 4
slecas = "PRTOUV"
CAS = 5
slecas = "FENOUV"
CAS = 6
slecas = "VEHOUV"
CAS = 7
slecas = "SURPHS"
CAS = 8
slecas = "CLIMHS"
CAS = 9
slecas = "GAZ"
FIN
AssistantEvenement.Client_id = nIDClient
AssistantEvenement.Site_id = nIDSite
AssistantEvenement.Agent_id = gnIDAgent
AssistantEvenement.lecas = slecas
AssistantEvenement.evt = "[%slepb%] à : "
AssistantEvenement.dateheure_evt = DateHeureSys()
AssistantEvenement.MailEnvoye = 0
SI HAjoute(AssistantEvenement,hEcritureDéfaut) = Vrai ALORS
ToastAffiche("Message envoyé",toastCourt,cvBas,chCentre)
sReponse est une chaîne = WBSVC_SOAP_PUSH.EnvoieAndroid("[%slepb%]","","Votre villa","",Vrai,Faux,Vrai,Faux,nIDSite)
SI ErreurDétectée ALORS
Erreur("Erreur lors de l'appel au Webservice : " + sReponse)
SINON
ToastAffiche("Notification envoyée")
FIN
FIN
SINON
MsgSMS est une chaîne
MsgSMS = ("," + "PAS" + "," + nIDClient + "," + nIDSite + "," + gnIDAgent + "," + nIDPbasignaler + "," + dhDateHeure + "," + ".")
SMS2CDC(MsgSMS)
FIN
gnActiverTimer = 1
gnAffichage = 0
FEN_Menu_principal..Plan = plprincipal
L'erreur retournée par le PUSH semble assez générique. Cela fait 2 jours que je tourne en rond.
Peut être y a t il une subtilité npeFirebaseCM_v1 avec WM28 UPDATE 5 ? En tout cas, ça m'échappe.
Merci de votre aide.
Cordialement,
Fred