Las notificaciones push (iPhone) dan "Conexión 111 rechazada"
Pregunta
Cuando intento enviar notificaciones push, aparece este error: "Conexión rechazada", pero no sé por qué ... También he subido mi apns-dev.pem en el mismo directorio en la raíz -directorio pero tampoco funcionará.
<?php
$payload['aps'] = array('alert' => 'This is the alert text', 'badge' => 1, 'sound' => 'default');
$payload = json_encode($payload);
$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195;
$apnsCert = 'apns-dev.pem';
$apnsPass = 'secret';
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
stream_context_set_option($streamContext, 'ssl', 'passphrase', $apnsPass);
$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 60, STREAM_CLIENT_CONNECT, $streamContext);
if (!$apns) {
echo "Error: $errorString ($error)";
}
// Do this for each
$deviceToken = '00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000';
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
fwrite($apns, $apnsMessage);
// End do
socket_close($apns);
fclose($apns);
?>
¿Alguien sabe lo que estoy haciendo mal? Cuando elimino la frase de contraseña y no la envío, tampoco funciona ...
Solución
No desea una frase de contraseña a menos que su archivo .pem requiera una. La conexión requiere la verificación por pares (opción generate_peer) activada. Además, asegúrese de que $ apnsCert sea la ruta válida al certificado, puede usar una ruta absoluta como verificación de la cordura.
Por último, esto no debería afectar su capacidad de conexión, pero el token de su dispositivo debe ser válido.
Otros consejos
Asegúrese de que el puerto de salida 2195 esté abierto. Esto estaría en la configuración de su firewall.
He reparado ese error agregando esto: STREAM_CLIENT_ASYNC_CONNECT | STREAM_CLIENT_CONNECT
Sepa que no recibo ningún error, pero no recibo ninguna notificación. Creo que el token de desarrollo no es válido, así que así es como se ve
números números números números números números números números.
Los espacios se eliminan en esta línea: $ apnsMessage = chr (0). chr (0). chr (32). paquete ('H *', str_replace ('', '', $ deviceToken)). chr (0). chr (strlen ($ carga útil)). $ carga útil;
Editar: Encontré el problema: Mi servidor rechaza el puerto de salida, acaba de enviar un correo, esperando que puedan activarlo ...