Ciao a tutti,
sul mio spazio vorrei mettere su un servizio che mi permette di inviare le notifiche di Apple (APNS), tramite uno script del genere:
Codice:
<?php
// Put your device token here (without spaces):
$deviceToken = '9dbfd12ab2c3eb90f9b324ec4af7436cd3cb07b1eb3dd87efb648ea4b218d9ee';
// Put your private key's passphrase here:
$passphrase = 'mypassword';
// Put your alert message here:
$message = 'My First Notification!';
////////////////////////////////////////////////////////////////////////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
// Open a connection to the APNS server
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);
echo 'Connected to APNS' . PHP_EOL;
// Create the payload body
$body['aps'] = array(
'alert' => $message,
'sound' => 'default'
);
// Encode the payload as JSON
$payload = json_encode($body);
// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));
if (!$result)
echo 'Message not delivered' . PHP_EOL;
else
echo 'Message successfully delivered' . PHP_EOL;
// Close the connection to the server
fclose($fp);
Il certificato ck.pem è presente e corretto; lo script, eseguito, restituisce il messaggio "Connected to APNS Message successfully delivered", ma non arriva la notifica, che invece arriva correttamente quando provo lo stesso script da un mio server locale... Per questo vorrei sapere se sui server di altervista c'e' qualche problema o impedimento per l'esecuzione di uno script del genere... per la connessione ssl o su quella porta... o non so...
Grazie per qualunque eventuale chiarimento.
Ciao