无法连接到 ssl://gateway.push.apple.com:2195
你好,我正在使用 php 开发网络服务。在此,我需要使用 APNS 在设备上生成通知,但它给出以下错误:无法连接到 ssl://gateway.push.apple.com:2195
我的代码如下,请帮助我,
<?php
echo '<pre>';
echo 'APNCRON: Started at '.date("Y-m-d H:i:s")."\n";
$apnsHost = 'gateway.push.apple.com'; //gateway.push.apple.com //gateway.sandbox.push.apple.com
$apnsPort = 2195;
$apnsCert = 'apns-dev.pem'; //replace with the appropriate production cert.
//include config.php here
$con = mysql_connect('localhost','sunil_myapns','fIgBMQ?(G?T_') or die("Could not connect to host.");
$database = mysql_select_db('sunil_myapns',$con) or die("Could not find database.");
/**
loop the result
send payload
*/
/*$sql = 'SELECT p.dev_token,
(SELECT COUNT(id) FROM tbl_news s WHERE s.created_date > p.last_access_time) AS cnt
FROM
tbl_apn p';*/ //This sql to give you an idea
//echo $sql;
$sql = 'SELECT * from person';
//echo $sql;
$result = mysql_query($sql);
if(!result)
{
echo 'APNCRON: Error while executing the query :'.mysql_error();//exit;
}
$rows = mysql_num_rows($result);
//echo $noDev2Push;exit;
if(!$rows)
{
echo 'APNCRON: No update'; exit;
}
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'tcp', 'local_cert', $apnsCert);
$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 120, STREAM_CLIENT_CONNECT, $streamContext);
$i=0;
while($row = mysql_fetch_array($result))
{
$deviceToken = 'abcbc12f8d7006be4a544237428f071697bb342608f6408af725ca94ae848ee5'; // remember that devToken is 64 char string
$cntUpdate = $row['id'];
$payload = array();
$payload['aps'] = array(
//'alert' => '', //we are not sending popup alerts
'badge' => (int) $cntUpdate,
'sound' => 'default'
);
$payload = json_encode($payload);
$i++;
//echo $payload; echo "\n";
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
//echo $apnsMessage; echo "\n";
fwrite($apns, $apnsMessage);
}
fclose($apns);
echo 'APNCRON: Completed at '.date("Y-m-d H:i:s")."\n";
echo 'Sent APN to '.$i.' device(s) ';//.date("Y-m-d H:i:s")."\n";
//socket_close($apns);
?>
提前致谢
hi i am working on web services using php. in this i need to generate notification on the device using APNS but its gives following error unable to connect to ssl://gateway.push.apple.com:2195
my code is following plz help me
<?php
echo '<pre>';
echo 'APNCRON: Started at '.date("Y-m-d H:i:s")."\n";
$apnsHost = 'gateway.push.apple.com'; //gateway.push.apple.com //gateway.sandbox.push.apple.com
$apnsPort = 2195;
$apnsCert = 'apns-dev.pem'; //replace with the appropriate production cert.
//include config.php here
$con = mysql_connect('localhost','sunil_myapns','fIgBMQ?(G?T_') or die("Could not connect to host.");
$database = mysql_select_db('sunil_myapns',$con) or die("Could not find database.");
/**
loop the result
send payload
*/
/*$sql = 'SELECT p.dev_token,
(SELECT COUNT(id) FROM tbl_news s WHERE s.created_date > p.last_access_time) AS cnt
FROM
tbl_apn p';*/ //This sql to give you an idea
//echo $sql;
$sql = 'SELECT * from person';
//echo $sql;
$result = mysql_query($sql);
if(!result)
{
echo 'APNCRON: Error while executing the query :'.mysql_error();//exit;
}
$rows = mysql_num_rows($result);
//echo $noDev2Push;exit;
if(!$rows)
{
echo 'APNCRON: No update'; exit;
}
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'tcp', 'local_cert', $apnsCert);
$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 120, STREAM_CLIENT_CONNECT, $streamContext);
$i=0;
while($row = mysql_fetch_array($result))
{
$deviceToken = 'abcbc12f8d7006be4a544237428f071697bb342608f6408af725ca94ae848ee5'; // remember that devToken is 64 char string
$cntUpdate = $row['id'];
$payload = array();
$payload['aps'] = array(
//'alert' => '', //we are not sending popup alerts
'badge' => (int) $cntUpdate,
'sound' => 'default'
);
$payload = json_encode($payload);
$i++;
//echo $payload; echo "\n";
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
//echo $apnsMessage; echo "\n";
fwrite($apns, $apnsMessage);
}
fclose($apns);
echo 'APNCRON: Completed at '.date("Y-m-d H:i:s")."\n";
echo 'Sent APN to '.$i.' device(s) ';//.date("Y-m-d H:i:s")."\n";
//socket_close($apns);
?>
thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我可以使用 telnet 从我的家用计算机连接到该主机:端口。最有可能的是您端的防火墙屏蔽了该 IP/端口,或者 Apple 和/或 Akamai 由于某种原因阻止了您。
I'm able to use telnet to connect to that host:port just fine from my home machine. Most likely something firewalled away that ip/port on your end, or Apple and/or Akamai have blocked you off for some reason.
如果您只是重复使用旧的证书签名请求 (CSR),请确保在导出新证书和私钥(作为 p12 文件)之前删除过期/旧的 APNs 证书。
If you're just reusing an old Certificate Signing Request (CSR), make sure to remove the expired/old APNs certificate before exporting the new one and the private key (as p12 file).
使用curl函数访问外部链接并从中获取响应
Use curl function for access external link and get back response from that