我正在使用PHP中的項目,這需要我在APNS服務器上推送警報通知。我使用了增強推送通知格式。但我沒有收到APNS文檔指定的回覆。我得到的答覆通常是三位數字,通常是133,132,154,138等,我認爲這是狀態標誌,例如。 133是1,3,3,但現在我也收到了139,所以我懷疑我對於迴應的解釋是錯誤的。但我沒有得到錯誤的地方。重要的是,雖然我收到了這些回覆警報正在推進,我收到我的iPhone以及iPad上的通知。增強的Apple推送通知:提供者服務器的響應錯誤
我的代碼如下:
$payload['aps'] = array('alert' => $message, 'badge' => 1, 'sound' => 'default');
$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195; // default port
$apnsCert = 'apns-dev.pem'; // APNS crtificate.
$passPhrase = '';
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
stream_context_set_option($streamContext, 'ssl', 'passphrase', $passPhrase);
try{
$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 60, STREAM_CLIENT_CONNECT, $streamContext);
if (!$apns) {
print "Failed to connect {$error} {$errorString}\n";
}
else {
// Sending the payload
$apnsMessage = chr(0) . pack('n', 1) . pack('n', $nid) . pack('n', time() + 604800) . pack('n', 32) . pack('H*', str_replace(' ', '', $alert_device_token)) . pack('n', strlen($payload)) . $payload;
echo 'APNS Message: ' . $apnsMessage;
$fwrite = fwrite($apns, $apnsMessage);
echo 'APNS response: ' . $fwrite;
而當此得到執行我得到了以下響應瀏覽器上顯示:
APNS消息:= YA OC6-U: 「0 qÊÂíÕ ÚÚÚ{{{{{{{{{{{{{{{{{{{{{{{{{{{{AP AP AP AP AP AP AP AP AP AP AP AP AP AP AP AP AP AP AP AP AP AP AP AP AP迴應:139
Can任何人都可以告訴我這是什麼意思139這裏。我在這裏做錯了什麼。
我可以問,如果你固定它。即時獲得這樣的東西。 – user633268 2011-04-13 10:54:05
嗨,是的,我擺脫了這種情況。你必須使用增強的有效負載,而不是這個負載,即正常的有效負載 – srahul07 2011-04-27 07:40:32
下面是正確的:你收到的數字是由fwrite寫入的字節。但是你可以使用它來進行錯誤檢查,因爲如果你收到0迴應,這意味着fwrite無法寫任何東西,可能是因爲Apple關閉了服務器連接。所以它不是帶有0響應的fwrite,它是一個先前的成功發送的fwrite,但是蘋果不喜歡它,所以它們關閉了服務器連接。如果你在SELECT語句中使用「ORDER BY id」,那麼你可以計算出發生問題的地方並從那裏繼續PUSH。 – jsherk 2012-04-07 05:01:06