2013-10-16 2 views
0

J'ai une simple application phonegap pour tester la notification push. J'utilise phonegap build pour créer l'application, puis j'installe l'application sur mon iphone en utilisant iTunes. L'enregistrement de la notification push a réussi avec le certificat push de production pem. Mais je n'ai pas pu recevoir de notifications push après l'exécution du script PHP ci-dessous. Le script fonctionne bien sans aucune erreur. Des idées sur ce qui pourrait mal tourner?buildgggap: Ne pas recevoir les notifications push ios

// This this a fake device id: 
$deviceToken = '9870h8v088bj29u080af894jj67klfgcv9mmm79k8e4l23456h908743n093e359'; 

// fake password: 
$passphrase = '123456'; 

// Put your alert message here: 
$message = 'New Message'; 
    //////////////////////////////////////////////////////////////////////////////// 

$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', 
        'badge' => '1' 
        ); 

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

?> 
+1

Vous dites 'L'enregistrement de la notification push a réussi avec le certificat de production push 'mais vous vous connectez au serveur sandbox -' ssl: //gateway.sandbox.push.apple.com: 2195'. Testez-vous ceci dans le bac à sable ou dans la production? – Eran

+0

Merci, j'ai également remarqué cela. Cela a fonctionné après que j'ai changé cela au serveur de production. – Vaeianor

+0

@Vaeianor: J'ai le même problème, quelle est votre solution? pls poster ici. – Ved

Répondre

1

J'ai également rencontré ce problème mais j'ai la solution. Pour envoyer les notifications à l'appareil Vous devez activer le port 2195 dans le pare-feu. Juste conatct votre société de serveur pour activer ce port. J'ai le serveur d'hostgator je les ai appelés ils ont permis le port et fonctionnent maintenant bien.

Questions connexes