2010-11-19 29 views
0

我正在使用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這裏。我在這裏做錯了什麼。

+0

我可以問,如果你固定它。即時獲得這樣的東西。 – user633268 2011-04-13 10:54:05

+0

嗨,是的,我擺脫了這種情況。你必須使用增強的有效負載,而不是這個負載,即正常的有效負載 – srahul07 2011-04-27 07:40:32

+0

下面是正確的:你收到的數字是由fwrite寫入的字節。但是你可以使用它來進行錯誤檢查,因爲如果你收到0迴應,這意味着fwrite無法寫任何東西,可能是因爲Apple關閉了服務器連接。所以它不是帶有0響應的fwrite,它是一個先前的成功發送的fwrite,但是蘋果不喜歡它,所以它們關閉了服務器連接。如果你在SELECT語句中使用「ORDER BY id」,那麼你可以計算出發生問題的地方並從那裏繼續PUSH。 – jsherk 2012-04-07 05:01:06

回答

1

回顯的「139」是fwrite()的返回值。這是由FWRITE寫入的字節數()

參見:PHP: fwrite

相關問題