推送通知(iPhone)给出“111连接被拒绝”

推送通知(iPhone)给出“111连接被拒绝”

问题描述:

当我尝试发送推送通知时,出现此错误:“连接被拒绝”,但我不知道为什么...我已经上传了我的apns-dev。 pem在同一个目录以及根目录下,但是也不起作用。推送通知(iPhone)给出“111连接被拒绝”

<?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); 
?> 

有人知道我在做什么错吗?当我删除密码短语并且不发送它也不起作用...

除非您的.pem文件需要密码,否则您不需要密码。连接需要打开对等验证(选件verify_peer)。另外,请确保$ apnsCert是证书的有效路径,您可以使用绝对路径作为完整性检查。

最后,这不应该影响您的连接能力,但您的设备令牌需要有效。

+0

真的非常感谢,我要检查这是否有效。 你的意思是通过绝对路径的FTP路径(/public-html/directory/file.pem)或(http://www.server.com/directory/file.pem)? 我得到这个错误之前我发送任何数据,所以它不是设备令牌,我认为... 感谢:D! – elslooo 2009-10-09 14:51:11

+0

它不起作用:(...,下面是我的答案,以防止这种错误。 – elslooo 2009-10-09 16:29:05

我已经加入该知道固定的错误:STREAM_CLIENT_ASYNC_CONNECT | STREAM_CLIENT_CONNECT

知道我没有得到任何错误,但我没有收到任何通知。我认为开发人员令牌无效,因此,这看起来像

数字数字数字数字数字数字数字数字。

空格在此行中删除: $ apnsMessage = chr(0)。 chr(0)。 chr(32)。包('H *',str_replace('','',$ deviceToken))。 chr(0)。 chr(strlen($ payload))。 $有效载荷;

编辑:我创办了问题: 我的服务器拒绝输出端口,只需发送一个邮件,希望他们能激活它...

确保出站端口2195是open.This会在你的防火墙配置中。

+0

是的,这实际上是问题,但感谢您的帮助。 – elslooo 2012-06-07 17:16:21