2011-11-28 156 views
0

我跟着蘋果指南在我的上網本上設置證書。然後,當我嘗試執行推送通知我得到這個錯誤:推送通知iPhone與Apns PHP

Warning: stream_socket_client() [function.stream-socket-client]: SSL operation failed with code 1. OpenSSL Error messages: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure in xxxx.php on line 92 

Warning: stream_socket_client() [function.stream-socket-client]: Failed to enable crypto in xxxx.php on line 92 

Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in xxxx.php on line 92 

Failed to connect 0 

這是我的PHP函數:

function push($deviceToken,$badge,$message) { 

    $sound = "default"; 

    // Construct the notification payload 
    $body = array(); 
    $body['aps'] = array("alert" => $message); 

    if ($badge) 
     $body['aps']['badge'] = $badge; 
    if ($sound) 
     $body['aps']['sound'] = $sound; 

    $ctx = stream_context_create(); 
    stream_context_set_option($ctx, 'ssl', 'local_cert', 'apns-dev.pem'); 
    $fp = stream_socket_client("ssl://gateway.sandbox.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx); 

    if (!$fp) { 
     print "Failed to connect $err $errstrn"; 
     return; 
    } else { 
     print "Connection OK\n"; 
    } 

    $payload = json_encode($body); 
    $msg = chr(0) . pack('n',32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack('n',strlen($payload)) . $payload; 
    print "sending message :" . $payload . "\n"; 
    fwrite($fp, $msg); 
    fclose($fp); 

} 

我嘗試測試蘋果gatway但是這是我的輸出:

$ telnet gateway.sandbox.push.apple.com:2195 
Trying 212.48.8.140... 
telnet: connect to address 212.48.8.140: Operation timed out 
telnet: Unable to connect to remote host 

任何想法解決它?

編輯: 我不知道我是否應該設置在遠程服務器上的證書或不

解決: 我 我的錯誤是路徑APNS-dev.pem

回答

0

無論是有些東西會阻止它,Apple的網關已關閉,或者您需要在訪問Apple之前先向Apple註冊您的IP地址。請檢查這三個:-)

+0

我遵循蘋果指南,它是可以的。 – Dany