APN code php donnant Avertissement: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://passerelle.bac à sable.push.apple.com:2195
Je suis en train de mettre en œuvre de Notification Push d'Apple à l'aide de code php. Voici mon code
$deviceToken = 'My device token';
$passphrase = '';
$message = 'My first push notification!';
////////////////////////////////////////////////////////////////////////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'apns-dev-cert.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 120, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);
echo 'Connected to APNS' . PHP_EOL;
$body['aps'] = array(
'alert' => $message,
'sound' => 'default'
);
$payload = json_encode($body);
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
$result = fwrite($fp, $msg, strlen($msg));
if (!$result)
echo 'Message not delivered' . PHP_EOL;
else
echo 'Message successfully delivered' . PHP_EOL;
fclose($fp);
Le certificat .fichier pem est dans le même répertoire que le fichier est.
Ce code fonctionne bien sur ma machine locale. J'utilise MAMP. Je reçois une notification sur mes appareils.
Mais quand je suis en train de l'essayer sur le serveur, il n'est pas de travail et donne une erreur.
Avertissement: stream_socket_client() [function.stream-socket-client]:
impossible de se connecter à ssl://passerelle.bac à sable.push.apple.com:2195
(Connection refused) in
/home/nextgen/public_html/ApplicationGenerator/appointmentportal/iosapp/SimplePush/simplepush.php
sur la ligne 14, impossible de se connecter: 111 Connexion refusée
Si le fichier de certificat est faux, comment serait-il travailler sur mon serveur local?
Je n'obtiens pas de moyen de sortir de cette. Pouvez-vous les gars m'aider?
- je crois que vous devriez aller sur ceci: stackoverflow.com/a/16274256/362310
- est votre problème a été résolu?
Vous devez vous connecter pour publier un commentaire.
En supposant que votre serveur a le droit de ports ouverts, "Connexion Refusée" généralement allusion à un invalide .Fichier PEM ou un mauvais mot de passe. Assurez-vous que lorsque vous ouvrez le .Fichier PEM, l'en-tête ressemble à quelque chose comme ceci :
sujet=/UID=com.yourapp.app/CN=Pomme de Développement IOS Services Push: com.yourapp.app/C=FR
émetteur=/C=US/O=Apple Inc./OU=Apple dans le Monde des Relations avec les Développeurs/CN=Apple dans le Monde des Relations avec les Développeurs de l'Autorité de Certification
suivie par une clé qui devrait ensuite être suivie par un en-tête qui ressemble à ceci pour votre clé privée :
Je vous suggère de supprimer le mot de passe afin de réduire les sources d'erreur potentielles.