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 :
Le retour est "OAUTH ok"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 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
Et avec ce code :
La encore il n'y a pas d'erreur dans le retour.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 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
Voici mon code webservice :
Et voici le code côté Android:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 PROCÉDURE 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 // Variables 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 // Chemin du fichier sur le serveur d'application sCheminFichierJson = fRepExe() + ["\"] + "Config\push-assistant-firebase-adminsdk-fbsvc-a64f49af70.json" // Lecture du fichier 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 // On récupère les identifiants ListeReponse = ListeIdentifiantsAndroid(Site_ID) SI ListeReponse..Occurrence > 0 ALORS // Ajout des identifiants dans un tableau POUR i = 1 _À_ ListeReponse..Occurrence bufIdentifiant = ListeReponse[i] TableauAjoute(tabIdentifiantsAEnvoyer,bufIdentifiant) FIN // On gère le fait que les notifications PUSH ne peuvent avoir au maximum que 1000 destinataires // S'il y a plus de destinataires il faut envoyer plusieurs messages. 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 // On prend les identifiants désirés TableauCopie(tabIdentifiantsAEnvoyer,tabIdentifiantsAEnvoyerTemp,nDebut,nFin - nDebut + 1) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // On envoie la notification maNotif est un Notification maNotif.Message = sMessage maNotif.Contenu = sContenu //////////////////////////////////////////////////////////////// // Android // Titre maNotif.Titre = sTitre // Son Android maNotif.Son = "son_notif.mp3" // Icône maNotif.Icone = "Proteck-Congo.ico" // mettre ici l'icône pour la notification // Groupe des notifications maNotif..Groupe = "Push" // Texte déroulant maNotif.TexteDéroulant = sTexteDeroulant // Options maNotif.Vibration = bVibration maNotif.AffichageLED = bLED maNotif.Supprimable = bSupprimable maNotif.ActiveApplication = bApplicationActive //CODE ORIGINAL // quand Exception dans SI PAS NotifPushEnvoie(maNotif,tabIdentifiantsAEnvoyerTemp,sContenuJson,tabTokensInvalides,npeFirebaseCM_v1) ALORS RENVOYER "Erreur notif :" + RC + ErreurInfo(errComplet) SINON // On traite les tokens invalides SI tabTokensInvalides..Occurrence > 0 ALORS nNbTokensInvalides += tabTokensInvalides..Occurrence // On supprime les tokens invalides SupprimeIdentifiantsAndroid(tabTokensInvalides) FIN FIN // FAIRE // RENVOYER "EXCEPTION : " + ExceptionInfo() // fin FIN // SINON RENVOYER "Aucun identifiant stocké sur le serveur." + "Aucune notification envoyée." FIN RENVOYER ""
L'erreur retournée par le PUSH semble assez générique. Cela fait 2 jours que je tourne en rond.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 PROCÉDURE PbASignaler(LOCAL nIDPbasignaler est un entier sur 8 octets) //PAS = Problème à signaler après une ronde 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) // Syntaxe : //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) //POUR TEST // 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 // Erreur("OAUTH ok") // FIN sReponse est une chaîne = WBSVC_SOAP_PUSH.EnvoieAndroid("[%slepb%]","","Votre villa","",Vrai,Faux,Vrai,Faux,nIDSite)//le dernier faux actionclic à modifier SI ErreurDétectée ALORS Erreur("Erreur lors de l'appel au Webservice : " + sReponse) //+ ErreurInfo(errComplet) SINON ToastAffiche("Notification envoyée") FIN FIN SINON MsgSMS est une chaîne MsgSMS = ("," + "PAS" + "," + nIDClient + "," + nIDSite + "," + gnIDAgent + "," + nIDPbasignaler + "," + dhDateHeure + "," + ".") SMS2CDC(MsgSMS) FIN //ferme(FEN_Problème_à_signaler) gnActiverTimer = 1 gnAffichage = 0 FEN_Menu_principal..Plan = plprincipal
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





Répondre avec citation




Partager