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

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top