我在stackoverflow上经历了几乎与此相关的所有线程,但没有帮助我很多可能是我不太了解。当我使用我的PHP代码发送推送通知时,它说无法连接。我之前已经为许多其他项目使用了相同的代码。但这次我无法找到问题所在
PHP代码
$status_message="Failure";
$deviceToken = "";
$userExist=1;
$message = 'You Recieved a new Notifcation from test';
$badge = (int)1;
$sound = 'cow.caf';
$body = array();
if($userExist==1)
{
$body['aps'] = array('alert' => $message);
$body['aps']['sound'] = $sound;
if(isset($badge))
{
$body['aps']['badge'] = $badge;
}
else
{
$body['aps']['message'] = $message;
}
}
$ctx = stream_context_create();
stream_context_set_option($ctx,'ssl','local_cert','apns-dev.pem');
stream_context_set_option($ctx,'ssl','verify_peer',false);
$fp = @stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195',
$err,$errstr, 60, "STREAM_CLIENT_CONNECT", $ctx);
if (!$fp)
{
print "Failed to connect $err $errstr\n";
print_r($err);
return;
}
else
{
print "Connection OK\n";
}
IPhone END
我无法连接0 0.我与iphone家伙谈过他们说他们的PEM是正确的,这是另一个可能的原因。但他们在结束时进行了测试,推动即将到来。他们确信他们是对的。 PEM文件位于服务器的正确位置。
现在是服务器设置,他们启用了tcp 2195,2196
服务器ENd
root@servername [~]# openssl version
OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
root@servername [~]# iptables -nL | grep 2195
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:2195
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2195
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2195
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:2195
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2195
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:2195
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2195
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:2195
root@servername [~]# iptables -nL | grep 2196
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:2196
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2196
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2196
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:2196
我尝试了PUTTY来修改telnet gateway.push.apple.com 2195并且它正在从服务器连接。
我不确定问题出在哪里。我确信代码,因为我在6个项目中使用了相同的文件。我的主机是VPS
请帮忙
答案 0 :(得分:2)
最后,我能够使用Google APNS库执行此操作。我之前的代码在6个项目中运行良好,但是当我浏览这个文档时
http://developer.apple.com/library/mac/#technotes/tn2265/_index.html
我发现除了iOS配置门户或Mac开发人员证书实用程序创建的SSL身份(证书和相关私钥)之外,您还应该在您的提供商上安装Entrust CA(2048)根证书栏下 连接推送服务时出现问题
我从https://www.entrust.net/downloads/binary/entrust_2048_ca.cer下载了委托根证书,并且已经由iphone开发人员在服务器上安装/上传了pem证书,并且工作正常。
如果有人遇到同样的问题,请关注此事。