我们正在测试一个具有APNS的应用程序,并且已经注意到沙箱环境的APNS服务有时会停止“推送”。该消息被苹果服务器成功接收,没有错误。没有来自反馈服务的传入消息(我们已成功收到有关其他事情的反馈)。我们的这个功能的代码库在一段时间后并没有改变,并且一直在稳定运行。如何判断苹果推送通知服务APNS是否有效
我的问题是,苹果是否有某种我们可以发送的ping让我们知道沙盒APNS是否仍然有效?
谢谢。
我们正在测试一个具有APNS的应用程序,并且已经注意到沙箱环境的APNS服务有时会停止“推送”。该消息被苹果服务器成功接收,没有错误。没有来自反馈服务的传入消息(我们已成功收到有关其他事情的反馈)。我们的这个功能的代码库在一段时间后并没有改变,并且一直在稳定运行。如何判断苹果推送通知服务APNS是否有效
我的问题是,苹果是否有某种我们可以发送的ping让我们知道沙盒APNS是否仍然有效?
谢谢。
AFAIK,判断服务是否不起作用的唯一方法是,如果您的套接字连接有问题。
在测试中,我发现我的deviceId在一个点上不正确,并阻止我接收消息。
此外,并非所有的邮件传递都是有保证的,我相信只有最后发送的邮件才能得到保证。您是否收到来自该批次的任何消息?
最后一个问题是您正在测试的设备类型,iPod Touches没有像iPhone那样进行推送。
如果你身边的一切都检查出来,也许你应该向苹果提交一个bug报告/功能请求。 Apple Bug Reporter从苹果开发论坛看来,这是一个非常需要的功能。
我尝试下面的代码(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 “:” 测试消息 “}} 发送有效载荷:{” APS “:{” \ u2019alert \ u2019 “:” 测试消息“}}
,但我没能获得通知
任何帮帮我?
@Kamal: 尝试不寻常// fwrite($ apns,$ apnsMessage); 那么你应该得到你的通知。 – 2010-02-17 03:53:48
你在服务器端使用哪种语言? – Sam 2009-08-31 05:16:14