2010-09-11 5 views
1

salut je travaille sur les services Web utilisant PHP. dans ce que je dois générer une notification sur l'appareil en utilisant APNS mais son erreur suivante donne incapable de se connecter à ssl: //gateway.push.apple.com: 2195impossible de se connecter à ssl: //gateway.push.apple.com: 2195

mon code suit plz help me

<?php 
echo '<pre>'; 
echo 'APNCRON: Started at '.date("Y-m-d H:i:s")."\n"; 

$apnsHost = 'gateway.push.apple.com'; //gateway.push.apple.com //gateway.sandbox.push.apple.com 
$apnsPort = 2195; 
$apnsCert = 'apns-dev.pem'; //replace with the appropriate production cert. 

//include config.php here 
     $con = mysql_connect('localhost','sunil_myapns','fIgBMQ?(G?T_') or die("Could not connect to host."); 
     $database = mysql_select_db('sunil_myapns',$con) or die("Could not find database.");  

/** 
loop the result 
send payload 
*/ 
/*$sql = 'SELECT p.dev_token, 
     (SELECT COUNT(id) FROM tbl_news s WHERE s.created_date > p.last_access_time) AS cnt 
     FROM 
     tbl_apn p';*/ //This sql to give you an idea 
//echo $sql; 
$sql = 'SELECT * from person'; 
//echo $sql; 
$result = mysql_query($sql); 

if(!result) 
{ 
    echo 'APNCRON: Error while executing the query :'.mysql_error();//exit; 
} 

$rows = mysql_num_rows($result); 
//echo $noDev2Push;exit; 
if(!$rows) 
{ 
    echo 'APNCRON: No update'; exit; 
} 

$streamContext = stream_context_create(); 
stream_context_set_option($streamContext, 'tcp', 'local_cert', $apnsCert); 

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 120, STREAM_CLIENT_CONNECT, $streamContext); 

$i=0; 

while($row = mysql_fetch_array($result)) 
{ 

    $deviceToken = 'abcbc12f8d7006be4a544237428f071697bb342608f6408af725ca94ae848ee5'; // remember that devToken is 64 char string 
    $cntUpdate = $row['id']; 


    $payload = array(); 
    $payload['aps'] = array(
           //'alert' => '', //we are not sending popup alerts 
           'badge' => (int) $cntUpdate, 
           'sound' => 'default' 
          ); 

    $payload = json_encode($payload); 
    $i++; 
    //echo $payload; echo "\n"; 

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

    //echo $apnsMessage; echo "\n"; 

    fwrite($apns, $apnsMessage); 
} 

fclose($apns); 

echo 'APNCRON: Completed at '.date("Y-m-d H:i:s")."\n"; 
echo 'Sent APN to '.$i.' device(s) ';//.date("Y-m-d H:i:s")."\n"; 
//socket_close($apns); 


?> 

merci d'avance

+0

Pouvez-vous faire un si (! $ Apns) echo "$ errorString
"; après la ligne $ apns = .. et afficher les résultats ur ici? –

+0

lorsqu'il est mis le code ci-dessus, il donne l'erreur Connexion refusée –

+0

Salut, Avez-vous résolu ce problème? Pouvez-vous s'il vous plaît suggérer quelle étape vous avez prise? – Dilip

Répondre

2

Je suis capable d'utiliser telnet pour me connecter à cet hôte: port très bien de ma machine à la maison. Il est fort probable que quelque chose de pare-feu se soit détaché de votre ip/port, ou qu'Apple et/ou Akamai vous aient bloqué pour une raison quelconque.

+0

je seconde que, semble que c'est un problème de pare-feu plus que tout. –

+0

plz un peu d'aide du corps –

+0

Votre code est probablement très bien, et c'est quelque chose d'autre qui provoque ce problème, le plus probable d'un pare-feu. Apple vous a peut-être bloqué pour avoir abusé de la connexion, par exemple. –

-2

Utilisez la fonction boucle d'accès lien externe et retourner la réponse de cette

0

Si vous êtes juste réutiliser une ancienne demande de signature de certificat (CSR), assurez-vous de retirer le certificat APNs expiré/ancien avant d'exporter le nouveau un et la clé privée (comme fichier p12).

Questions connexes