IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windev Mobile Discussion :

Notification push Windev Mobile [Généralités]


Sujet :

Windev Mobile

  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2015
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2015
    Messages : 115
    Par défaut Notification push Windev Mobile
    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 :
    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
    Le retour est "OAUTH ok"

    Et avec ce code :

    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
    La encore il n'y a pas d'erreur dans le retour.

    Voici mon code webservice :
    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 ""
    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
     
    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
    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

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 410
    Par défaut
    Bonjour,

    Etant donné que la plupart du temps pour Android, il faut être à jour des versions Windev Mobile, je me demande si le problème ne provient pas de la version utilisée

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2015
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2015
    Messages : 115
    Par défaut WM28 notification push
    Bonjour,

    Après de longues recherches, voici un code qui fonction. Si ça peut aider quelqu'un.

    Côté Android : Ajout du token Firebase

    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
    PROCÉDURE ActivationNotifPush(bufIdentifiant est un Buffer, sErreur est une chaîne)
    sIdentifiantBase64 est une chaîne
     
    //Convertit le Buffer Java en texte pur Base64
    sIdentifiantBase64	= Encode(bufIdentifiant, encodeBASE64)
    sIdentifiantBase64	= SansEspace(sIdentifiantBase64)
     
    SI Taille(sIdentifiantBase64) > 0 ALORS
    	WBS_SOAP_PUSH..Adresse = "https://MON SERVEUR WEB/WBS_SOAP_PUSH_WEB/awws/WBS_SOAP_PUSH.awws"
     
    	// On envoie la chaîne Base64 sécurisée au Webservice
    	WBS_SOAP_PUSH.AjouteIdentifiantAndroid(sIdentifiantBase64, SysVersionAndroid(), Monsite)	
     
    	SI ErreurDétectée() ALORS
    		Info("Activation : " + ErreurInfo(errComplet))
    	FIN
    SINON
    	Erreur("Erreur d’enregistrement : ", sErreur)
    FIN
    Côté Webservice :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PROCÉDURE AjouteIdentifiantAndroid(sIdentifiant est une chaîne, sInfoPerso est chaîne,Site_ID est un entier sur 8 octets) : booléen
     
    RENVOYER __AjouteIdentifiant(sIdentifiant,sInfoPerso,typeServiceAndroid,Site_ID)
    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
    PROCÉDURE PRIVÉE __AjouteIdentifiant(sIdentifiant est une chaîne, sInfoPerso est une chaîne, nTypeService est un entier, Site_ID est un entier sur 8 octets) : booléen
     
    // Suppression des espaces ou caractères de contrôle invisibles aux extrémités
    SI nTypeService = typeServiceAndroid ALORS
    	sIdentifiant = Décode(sIdentifiant, encodeBASE64)
    FIN
    sIdentifiant = SansEspace(sIdentifiant)
     
    SI Taille(sIdentifiant) = 0 ALORS
    	RENVOYER Faux
    FIN
     
    HLitRecherchePremier(IdentifiantsPush,IdentifiantService,sIdentifiant,hIdentique)
    SI HTrouve(IdentifiantsPush) ALORS
    	// doublon
    	RENVOYER Faux
    FIN
     
    IdentifiantsPush.IdentifiantService = sIdentifiant
    IdentifiantsPush.InfoPerso = sInfoPerso
    IdentifiantsPush.TypeService = nTypeService
    IdentifiantsPush.Site_ID = Site_ID
     
    // Ajout dans la base
    SI PAS HAjoute(IdentifiantsPush) ALORS
    	ExceptionDéclenche(1,"Echec de l'ajout de l'identifiant")
    FIN
     
    RENVOYER Vrai
    Liste des tokens disponibles pour le push :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PROCÉDURE ListeIdentifiantsAndroid(Site_ID est un entier sur 8 octets) : tableau de chaîne
    RENVOYER __ListeIdentifiants(typeServiceAndroid,Site_ID)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    PROCÉDURE PRIVÉE __ListeIdentifiants(nTypeService est entier,nSite_id est un entier sur 8 octets) : tableau de chaînes
     
    // Variables locales
    tabResultat est un tableau de chaînes
     
    // Votre requête SQL ou parcours HFSQL pour récupérer les jetons du Site_ID
    POUR TOUT IdentifiantsPush AVEC Site_ID = nSite_id
    	SI IdentifiantsPush.TypeService = nTypeService ALORS
    		// On extrait en texte pur et on nettoie les espaces résiduels
    		TableauAjoute(tabResultat, SansEspace(IdentifiantsPush.IdentifiantService))
    	FIN
    FIN
     
    RENVOYER tabResultat
    Et enfin le push :

    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 chaînes
    ListeReponse					est un tableau de chaînes
    sUnToken						est une chaîne
    tabTokensInvalides				est un tableau de chaînes
    nNbTokensInvalides				est un entier
    sLog							est une chaîne
     
     
    // 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
    		fAjouteTexte("C:\Temp\log_json.txt", DateHeureVersChaîne(DateSys(), "JJ/MM/AAA HH:MM") + " Impossible de charger le json sdk")
     
    	SINON
    		sContenuJson	= fChargeTexte(sCheminFichierJson)
     
    		SI sContenuJson = "" ALORS
    			fAjouteTexte("C:\Temp\log_json.txt", DateHeureVersChaîne(DateSys(), "JJ/MM/AAA HH:MM") + " Json SDK vide. [%sCheminFichierJson%]")
    		SINON
    			fAjouteTexte("C:\Temp\log_json.txt", DateHeureVersChaîne(DateSys(), "JJ/MM/AAA HH:MM") + " Json SDK : " + Taille(sContenuJson) )
    		FIN
    	FIN
    SINON
    	fAjouteTexte("C:\Temp\log_json.txt", DateHeureVersChaîne(DateSys(), "JJ/MM/AAAAA HH:MM") + " Le fichier de configuration Firebase AdminSDK est introuvable")
    FIN
     
    // On récupère les identifiants
    ListeReponse = ListeIdentifiantsAndroid(Site_ID)
     
    SI ListeReponse..Occurrence > 0 ALORS
     
    	POUR CHAQUE sUnToken  DE ListeReponse
    		// Transfert propre dans le tableau d'envoi principal
    		TableauAjoute(tabIdentifiantsAEnvoyer, SansEspace(sUnToken))
     
    		// . Log de contrôle visuel (Corrigé pour afficher le texte et sa vraie taille)
    		fAjouteTexte("C:\Temp\log_json.txt", RC + "--- CONTROLE TOKEN ---" + RC + ...
    		"Nombre de jetons dans le tableau : " + tabIdentifiantsAEnvoyer..Occurrence + RC + ...
    		"Longueur réelle du jeton textuel : " + Taille(sUnToken) + " caractères" + RC + ...
    		"Valeur brute du jeton : " + sUnToken + RC + "---FIN CONTROLE TOKEN----" + RC)
     
    	FIN
    		//////////////////////////////////////
    		// 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,tabIdentifiantsAEnvoyer,sContenuJson,tabTokensInvalides,npeFirebaseCM_v1) ALORS
    				// Récupération de l'erreur brute
    				sErreurDetaillee	est une chaîne	= ErreurInfo(errComplet)
    				serreursys est une chaîne = ErreurInfo(errMessageSystème)
     
    				// Écriture d'un fichier Log pour ne rien rater
    				sLog = "ERREUR ENVOI PUSH " + DateHeureVersChaîne(DateSys(), "JJ/MM/AA HH:MM") + " : [%sErreurDetaillee%]" + RC + "[%serreursys%]" + RC
     
    				// Trace le jeton extrait pour vérification visuelle
    				fAjouteTexte("C:\Temp\log_json.txt", "Jeton envoyé à Google (" + Taille(tabIdentifiantsAEnvoyer[1]) + " chars) : " + tabIdentifiantsAEnvoyer[1] + RC)
     
    				fAjouteTexte("C:\Temp\log_push_error.txt", sLog)
    				RENVOYER "Erreur notif : voir log"
     
    			SINON
    				// On traite les tokens invalides
    				SI tabTokensInvalides..Occurrence > 0 ALORS
    					nNbTokensInvalides += tabTokensInvalides..Occurrence
     
    					// On supprime les tokens invalides
    					SupprimeIdentifiantsAndroid(tabTokensInvalides)
    				FIN
     
    			FIN
    		FAIRE
    			fAjouteTexte("C:\Temp\log_push_error.txt", ExceptionInfo())
    			RENVOYER "EXCEPTION : " + ExceptionInfo()
    		FIN
    //	
    SINON
    	RENVOYER  "Aucun identifiant stocké sur le serveur." + "Aucune notification envoyée."
    FIN
     
    RENVOYER ""
    Amusez vous bien.

    Cordialement,

    Fred

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo