我們正在測試一個具有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