notificações push (iPhone) dar “111 Conexão recusada”
Pergunta
Quando tento enviar Push Notifications eu recebo este erro: "Conexão recusada", mas eu não sei por que ... Eu carreguei meu APNs-dev.pem no mesmo diretório, bem como no raiz- diretório, mas que não quer trabalhar.
<?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);
?>
Alguém sabe o que estou fazendo de errado? Quando eu remover a senha e não enviá-lo que não quer trabalhar ...
Solução
Você não quer uma senha a menos que o arquivo .pem requer um. A conexão requer verificação peer (opção verify_peer) ligado. Além disso, certifique $ apnsCert é o caminho válido para o certificado, você pode usar um caminho absoluto como uma verificação de sanidade.
Por fim, isso não deve afetar sua capacidade de se conectar, mas o dispositivo de token precisa ser válido.
Outras dicas
Certifique-se a porta de saída 2195 é open.This estaria em sua configuração do firewall.
Eu sei fixa esse erro adicionando esta: STREAM_CLIENT_ASYNC_CONNECT | STREAM_CLIENT_CONNECT
sei que eu não estou recebendo quaisquer erros, mas eu não receber qualquer notificação. Eu acho que o Dev-token não é saber válida, por isso, é assim que pareça
Números Números Números Números Números Números Números Números.
Os espaços são removidos nesta linha: $ ApnsMessage = chr (0). CHR (0). CHR (32). embalar ( 'H *', str_replace ('', '', $ deviceToken)). CHR (0). chr (strlen ($ payload)). $ Payload;
Editar: eu fundei o problema: Meu servidor está se recusando a porta de saída, apenas enviou um e-mail, esperando que eles podem ativá-lo ...