7

我正在尝试将推送通知添加到我的应用程序。我正在使用临时配置文件。我的 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);

不会产生连接错误。反馈渠道似乎没有任何消息。

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

我有一个 ATT 3G 和一个旧的 2G,用作 iPod。都不工作。

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

珍妮弗

4

2 回答 2

24

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

于 2010-02-24T03:44:45.723 回答
6

Mups的回答是对的。我想添加一个有同样问题的附加情况(以防它对其他人有帮助)。我有推送设置,它只在 1 部 iphone 上工作(不是其他的)。这非常令人费解。问题是 1 部工作的 iphone 安装了程序的“调试”版本,而其他 iPhone 安装了“临时”版本。我们的 APNS 服务器设置为使用“开发”证书和 gateway.sandbox.push.apple.com

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

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

我们很高兴去。

于 2010-08-26T15:10:00.037 回答