Derniers Articles
Vous êtes ici : Accueil / Tutoriaux / Développement / Windev Mobile / Android / Comment envoyer depuis PHP une notification push à une application WinDev Mobile Android

Comment envoyer depuis PHP une notification push à une application WinDev Mobile Android

WinDev Mobile peut recevoir des notifications utilisant la plateforme GCM (Google Cloud Messaging) et les fonctions NotifPushActive et NotifPushProcedure.

Quelle déception/frustration de constater que seule une application WinDev peut envoyer une telle notification (fonction NotifPushEnvoie) ! Dans un monde où la communication entre systèmes hétérogènes devient incontournable, comment accepter une telle limitation qui restreint les échanges dans le microcosme WxxDev ?

Dans le cadre d’un de nos projets, nous avons besoin d’envoyer des notifications à une application WinDev Mobile Android depuis PHP. Après des essais infructueux, nous avons constaté l’incompatibilité des fonctions proposées par WinDev Mobile avec le standard proposé par les APIs Google.

La Squad InfoGones s’est alors mise en recherche d’un contournement. Nous avons hacké la connexion https établie entre une application WinDev et les serveurs Google lors de l’appel à la fonction NotifPushEnvoie. Nous avons ainsi pu intercepter les données envoyées par l’application WinDev à destination de WinDev Mobile (via Google Cloud Messaging). Effectivement, nous avons constaté l’utilisation d’une structure d’échanges spécifique qui rend impossible l’utilisation d’un autre langage sans connaître ladite structure.

On y retrouve les divers éléments du type Notification
proposé par WinDev :

WX_PUSH_VERSION
WX_PROP_TITRE

WX_PROP_MESSAGE

WX_PROP_ICONE

WX_PROP_TEXTEDEROULANT

WX_PROP_SON

WX_PROP_VIBRATION

WX_PROP_AFFICHAGELED

WX_PROP_COULEURLED

WX_PROP_ACTIVEAPPLICATION

WX_PROP_SUPPRIMABLE

WX_PROP_CONTENU

Pour que la notification soit comprise par l’application WinDev Mobile, le message qui transite par les serveurs Google doit donc contenir les valeurs ci-dessus pour une bonne prise en compte.

Ci-dessous, un script de test en PHP. Pour l’utiliser il convient de créer un projet dans votre Google Developers Console et de suivre le processus décrit dans l’aide de WinDev pour récupérer la clé d’API.

<?php
// Clé API Google API’s Console

define( ‘API_ACCESS_KEY’, ‘AIzaSyCGhsmNMe9Dlcg7ORhYCwSYAxdYWZ3nritAkE’ );

//Tableau des tokens destinataires

$registrationIds = array(« APA91bFh_1877w2uQK0gogbWJBkscMxjKwIj0SmYnv52shc7S9c4zgr7RIsfI_RPnOXEEi7LQNl0jAk0CxNC_sNMA-S5jBGFiWRQ9JYP4MoI2-FvNurb1AD8k_NHJXBaWDy3WZ4UbTOjjFrvxYoPnRs7N3P4PH2JCpkllnoWC_NvSUHqWlE » );

$wx_data = array(

‘WX_PUSH_VERSION’ => « 1.0 »,

‘WX_PROP_TITRE’ => « Titre »,

‘WX_PROP_MESSAGE’ => « Nouvelle notification »,

‘WX_PROP_ICONE’ => «  »,

‘WX_PROP_TEXTEDEROULANT’ => «  »,

‘WX_PROP_SON’ => «  »,

‘WX_PROP_VIBRATION’ => « false »,

‘WX_PROP_AFFICHAGELED’ => « false »,

‘WX_PROP_COULEURLED’ => 65280,

‘WX_PROP_ACTIVEAPPLICATION’ => « true »,

‘WX_PROP_SUPPRIMABLE’ => « true »,

‘WX_PROP_CONTENU’ => «  »

);

$fields = array

(

‘registration_ids’ => $registrationIds,

‘data’ => $wx_data

);

$headers = array

(

‘Authorization: key=’ . API_ACCESS_KEY,

‘Content-Type: application/json’

);

$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 );

echo $result;

?>

Source

2 commentaires

  1. Salut salut,

    Très bonne initiative ce petit topic ! Merci beaucoup.

    Est-ce que la même manipulation/solution est prévue pour Firebase (donc compatible avec IOS) ??

    Merci encore
    Bonne journée.

Répondre

Votre adresse email ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

shared on wplocker.com