Apple推送通知服务APNS - 通知未到达

时间:2010-02-18 23:57:21

标签: php iphone push-notification apple-push-notifications

我正在尝试向我的应用添加推送通知。我正在使用临时个人资料。我的appID没有通配符。我使用以下PHP代码...

$deviceToken="****";masked
$time = time();

 $apnsHost = 'gateway.sandbox.push.apple.com'; 

$apnsPort = 2195;
$apnsCert = 'apns-dev-maui.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/>";
$payload = array();
$payload['aps'] = array('alert' => 'It works!!', 'badge' => 1, 'sound' => 'default');
$payload = json_encode($payload);
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(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);

不会生成连接错误。似乎没有任何东西来自反馈渠道。

我从组织者控制台获得了deviceTokens和NSLog命令。此应用的通知显示在我的设置菜单中。

我有一台ATT 3G和一台旧的2G用作iPod。都没有工作。

没有错误可以看,我没有想法。有人有任何见解吗?

2 个答案:

答案 0 :(得分:24)

我终于明白了。我在使用Sandbox时使用了AdHoc配置文件。 Ad Hoc显然被认为是生产而不是发展。我创建了推送生产证书,安装它,瞧!它有效。

答案 1 :(得分:6)

Mups的回答是正确的。我想添加一个具有相同问题的附加情况(如果它对其他人有帮助)。我有推送设置,它正在正好工作1 iphone(而不是其他)。这非常令人费解。问题在于,1个工作的iphone安装了程序的“调试”版本,其他人安装了“ad hoc”版本。我们的APNS服务器设置为使用'开发'证书和gateway.sandbox.push.apple.com

我将服务器上的证书更改为“生产”证书,将主机更改为gateway.push.apple.com

(然后删除了所有设备上的所有配置文件,并安装了“ad hoc”版本的程序)

我们很高兴。