Bonjour à tous,
je me permet de poster ici dans la catégorie PHP car mon problème concerne mon script PHP meme s'il est déclenché depuis Webdev, en effet si je l'execute séparement dans un fichier .php natif le problème reste le meme.

Donc,
dans mon projet Webdev PHP, j'essaye d'envoyer des notifications Push GCM (google) avec un script PHP, en effet avec Webdev19 Php la fonction NotifPushEnvoie() n'existe pas encore.

En fait j'arrive à envoyer des notifications push GCM à partir d'un programme Windev sans problème (grace à la fonction NotifPushEnvoie()), mais depuis le script PHP c'est trés étrange :

le serveur de google me retourne que le message a bien été envoyé mais rien n'arrive sur mon smartphone, si je fais la meme chose depuis le programme Windev a qq secondes prés, la notification arrive bien.

Voici le résultat retourné par le serveur google concernant la requete que je fais en PHP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
{"multicast_id":8854420593690047807,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1409091447401851%81b9ecc0f9fd7ecd"}]}
--> "success" est à 1 donc le message est bien envoyé
--> "canonical_ids" est à zéro donc je n'ai pas utilisé de token client périmé
--> j'obtiens bien un id de message, je devrai donc recevoir le message sur le smartphone.

Avec Windev j'utilise NotifPushEnvoie() et ca marche, mon appli Windev Mobile Android fonctionne donc bien.
Avec le script PHP Google me dit que ca a marché mais rien n'arrive sur le smartphone.
J'ai redémarré le smartphone au cas ou mais le problème reste inchangé.
Dans les paramètres de mon compte Google ma clé serveur d'appli est bien allouée à n'importe quelle ip (Any IP allowed).

Voici le code PHP me permettant d'envoyer une notification :
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
 
Function PushEnvoieNotif($apikey,$txt,$tbtoken)
{
define( 'API_ACCESS_KEY', $apikey ); //ma clé serveur google
 
$registrationIds = array();
$registrationIds[] = $tbtoken; //le token du client destinataire (fourni par NotifPushActive() dans l'appli Windev Mobile Android)
 
//le contenu du message
$msg = array
(
'message' => $txt,
'title'=> 'Mon titre',
'subtitle'=> '',
'tickerText'=> $txt,
'vibrate'=> 1,
'sound'=> 1
);
 
//le champ POST pour la requete Https (sera encodé en JSON)
$fields = array
(
'registration_ids' => $registrationIds,
'data'=> $msg
);
 
$headers = array
(
'Authorization: key=' . API_ACCESS_KEY,
'Content-Type: application/json'
);
 
//la construction de la requete HTTP
$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://android.googleapis.com/gcm/send');
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec($ch );
curl_close( $ch );
 
return $result;
}
et voici un exemple de ce que contient la variable $fields (le contenu JSON à passer à la requete Https) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
{"registration_ids":["APA91bFXRABJR6ANDWLJc6MXQKFygn_44f93o-kut3BADfd4_5c7D5V084cyzNFhbinMY4Uwempuc7mzXG3XPl1w71bab25bJXREeqqNk9Ae0Z5sFEzUxQRQe4kJs4XZzhOYsyT5C31nySjYmlXiVL_3C-C2hUDdlA"],"data":{"message":"coucou","title":"Mon titre","subtitle":"","tickerText":"coucou","vibrate":1,"sound":1}}
Est-il possible que l'appli mobile développé avec Windev Mobile puisse ne pas relayer les notifs push qui ne sont pas généré avec une fonction Windev/Webdev ? le contenu de ces notifs est pourtant propre à Google.
Je ne sais plus de quel coté chercher, ca ne doit pourtant pas être grand chose...

Help !