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 ...

¿Fue útil?

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 ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top