2009-09-18 84 views
5

當我嘗試發送推送通知時,出現此錯誤:「連接被拒絕」,但我不知道爲什麼...我已經上傳了我的apns-dev。 pem在同一個目錄以及根目錄下,但是也不起作用。推送通知(iPhone)給出「111連接被拒絕」

<?php 
$payload['aps'] = array('alert' => 'This is the alert text', 'badge' => 1, 'sound' => 'default'); 
$payload = json_encode($payload); 
$apnsHost = 'gateway.sandbox.push.apple.com'; 
$apnsPort = 2195; 
$apnsCert = 'apns-dev.pem'; 
$apnsPass = 'secret'; 

$streamContext = stream_context_create(); 
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert); 
stream_context_set_option($streamContext, 'ssl', 'passphrase', $apnsPass); 

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 60, STREAM_CLIENT_CONNECT, $streamContext); 

if (!$apns) { 
    echo "Error: $errorString ($error)"; 
} 

// Do this for each 
$deviceToken = '00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000'; 
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload; 
fwrite($apns, $apnsMessage); 
// End do 

socket_close($apns); 
fclose($apns); 
?> 

有人知道我在做什麼錯嗎?當我刪除密碼短語並且不發送它也不起作用...

回答

2

除非您的.pem文件需要密碼,否則您不需要密碼。連接需要打開對等驗證(選件verify_peer)。另外,請確保$ apnsCert是證書的有效路徑,您可以使用絕對路徑作爲完整性檢查。

最後,這不應該影響您的連接能力,但您的設備令牌需要有效。

+0

真的非常感謝,我要檢查這是否有效。 你的意思是通過絕對路徑的FTP路徑(/public-html/directory/file.pem)或(http://www.server.com/directory/file.pem)? 我得到這個錯誤之前我發送任何數據,所以它不是設備令牌,我認爲... 感謝:D! – elslooo 2009-10-09 14:51:11

+0

它不起作用:(...,下面是我的答案,以防止這種錯誤。 – elslooo 2009-10-09 16:29:05

0

我已經加入該知道固定的錯誤:STREAM_CLIENT_ASYNC_CONNECT | STREAM_CLIENT_CONNECT

知道我沒有得到任何錯誤,但我沒有收到任何通知。我認爲開發人員令牌無效,因此,這看起來像

數字數字數字數字數字數字數字數字。

空格在此行中刪除: $ apnsMessage = chr(0)。 chr(0)。 chr(32)。包('H *',str_replace('','',$ deviceToken))。 chr(0)。 chr(strlen($ payload))。 $有效載荷;

編輯:我創辦了問題: 我的服務器拒絕輸出端口,只需發送一個郵件,希望他們能激活它...

6

確保出站端口2195是open.This會在你的防火牆配置中。

+0

是的,這實際上是問題,但感謝您的幫助。 – elslooo 2012-06-07 17:16:21

相關問題