PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Device Token iOS
Device Token iOS
Débuté par Masterfab, 17 déc. 2014 16:10 - 4 réponses
Posté le 17 décembre 2014 - 16:10
Bonjour à tous,

Je cherche à récupérer un device token iOS avec NotifPushActive, pour l'envoyer en paramètre à un script PHP via un formulaire (HTTPEnvoieFormulaire).
Le script PHP est chargé de le stocker dans une base MySQL.

Malheureusement, je ne sais pas quel traitement je dois faire subir à ma variable Token qui est un buffer, pour l'envoyer sous forme de chaîne de caractère via mon formulaire.

Un petit coup de main serait le bienvenu car je commence à m'arracher les cheveux. :)
Posté le 18 décembre 2014 - 17:42
Bonjour,

Personne ne sait convertir un Token Device en chaîne de caractères ?

Je l'ai fait avec d'autres langages, comme LiveCode notamment, et je stocke des Token sous la forme :
<b6345ace 434ea0cc fa7ef89b adb4e55d 7e63b4ef 0dc5ee4f ad04f674 c29980d7>

C'est sous cette forme que je les envoie directement au serveur de Push Apple et tout fonctionne très bien.

J'ai besoin de compléter la même base MySQL avec une appli WinDev Mobile, mais je n'arrive pas à convertir les Token !

Merci d'avance pour votre précieuse aide.
Posté le 18 décembre 2014 - 20:03
Bonjour Fabrice

buffervershexa si cette instruction est disponible sous IOS...

sinon, boucle sur les octets et numeriqueverschaine au format hexa

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXReplication, votre système de réplication open source est
disponible sur mon site web !!!
WXShowroom.com : Montrez vos projets !
Plus d'information sur http://fabriceharari.com


On 12/18/2014 11:42 AM, masterfab wrote:
Bonjour,

Personne ne sait convertir un Token Device en chaîne de caractères ?

Je l'ai fait avec d'autres langages, comme LiveCode notamment, et je
stocke des Token sous la forme :
<b6345ace 434ea0cc fa7ef89b adb4e55d 7e63b4ef 0dc5ee4f ad04f674 c29980d7>

C'est sous cette forme que je les envoie directement au serveur de Push
Apple et tout fonctionne très bien.

J'ai besoin de compléter la même base MySQL avec une appli WinDev
Mobile, mais je n'arrive pas à convertir les Token !

Merci d'avance pour votre précieuse aide.
Posté le 19 décembre 2014 - 12:32
Bonjour Fabrice,

Ca a marché avec BufferVersHexa(Token,4) !

Merci beaucoup de m'avoir mis sur la voie !
Membre enregistré
29 messages
Posté le 12 juin 2017 - 17:48
Bonjour a tu trouvé ne solution je seche un peut la j'ai fais ça :
sauvegarde dur BD :
Serveur_Notification.Token = UnicodeVersAnsi(BufferVersHexa(Token,4))

Je l'envoi au programme php après au besoin des utilisateurs :
private function littleToBigEndian($little) {
return implode('',array_reverse(str_split($little,2)));
}


// Sends Push notification for iOS users
public function iOS($data, $vtokentxt) {
$vtokentxt = preg_replace('/[\r\n]+/', ' ', $vtokentxt);

//Working on vtokentxt, explode by space and littleToBigEndian for each part
$tokenArray = explode(" ",$vtokentxt);

$deviceToken="";

for ($i=0;$i<count($tokenArray);$i++) {
$deviceToken .= $this->littleToBigEndian($tokenArray[$i])." ";
}

// Create the payload body
$body['aps'] = array(
'alert' => array(
'title' => $data['mtitle'],
'body' => $data['mdesc']
),
'sound' => "son_notif.aac"
);
$body['wd'] = $data['contenu'] ;

// Encode the payload as JSON
$payload = json_encode($body);


// Build the binary notification

$inner = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(mb_strlen($payload)) . $payload;



$notification = chr(2) . pack('N', strlen($inner)) . $inner;

$gateway = 'gateway.push.apple.com:2195';

// Create a Stream
$ctx = stream_context_create();
// Define the certificate to use

$passphrase_key_Pem = "XXXXXXXXXXXXXXXXXXXXXXXX";

stream_context_set_option($ctx, 'ssl', 'local_cert', CERT_REPERTOIRE_PEM."/push_ios.pem");
// Passphrase to the certificate
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase_key_Pem);

// Open a connection to the APNS server
$fp = stream_socket_client(
$gateway, $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

// Check that we've connected
if (!$fp)
return false;

// Ensure that blocking is disabled
stream_set_blocking($fp, 0);

// Send it to the server
$result = fwrite($fp, $notification, strlen($notification));

// Close the connection to the server
fclose($fp);

//return "send result=$resultn";
if (!$result)
return false;
else
return true;

}



Normalement ça devrai fonctionné mais je n'ai aucune notif sur les telephones ........ grrrrrrrrrrrr

je sèche

Au cas ou merci