【问题标题】:Server Side iPhone APNS Communication服务器端 iPhone APNS 通信
【发布时间】:2009-06-30 04:55:02
【问题描述】:
我有一个简单的问题。对于苹果推送通知服务,我需要有自己的服务器,它将推送通知发送到苹果服务器,对吧?
我可以在常规虚拟主机帐户上使用简单的 PHP 脚本来执行此操作,还是需要一个具有完整管理员访问权限的专用服务器?
如果这在 PHP 中是可能的,任何人都可以指出一些可以帮助我开始的示例吗?现在,我非常有信心实现客户端部分不会有问题,但服务器端对我来说仍然有点神秘......
谢谢!
弗洛里安
【问题讨论】:
标签:
php
iphone
push-notification
【解决方案2】:
APNS 的主要问题是端口
这么多提供商没有打开 2195 端口
所以一开始就专注于此,然后去找主机提供商
这是我尝试的代码,但一个问题是无法获得设备通知
你好,
我尝试了以下代码(PHP)
$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195;
$apnsCert = 'apple_push_notification_production.pem';
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);
if($apns)
{
echo "Connection Established<br/>";
$deviceToken = '**********';//masked
$body = array();
$body['aps'] = array(’alert’ => "test message");
//$body['aps']['badge'] = 1;
$payload = json_encode($body);
$apnsMessage = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack("n",strlen($payload)) . $payload;
print "sending message :" . $apnsMessage . "<br/>";
print "sending payload :" . $payload . "<br/>";
fwrite($apns, $apnsMessage);
}
else
{
echo "Connection Failed";
echo $errorString;
echo $error;
}
socket_close($apns);
fclose($apns);
回复已建立连接
发送消息:�� d^÷Îå0ZCd%1ÄuwOOYš'ÊÈ}ârðm¾Í�,{"aps":{"\u2019alert\u2019":"test message"}}
发送有效载荷:{"aps":{"\u2019alert\u2019":"test message"}}
但我无法收到通知
有什么帮助吗?