2012-04-04 132 views
0

自從昨晚我一直在尋找答案,但它似乎找不到任何人有完全相同的問題。類似但不是。我試圖通過stream_socket_client連接到Apples APNS。我在LAMP環境中工作並打開端口2195。我的errorString說(權限被拒絕)。我的麻煩是找到發佈了關於這個錯誤的很多信息的人。我從錯誤報告得到警告警告:stream_socket_client():無法連接到SSL://gateway.sandbox.push.apple.com:2195(拒絕)PHP IOS推送通知(權限被拒絕)

至於好東東。我寫了一個類來處理這個推送通知。這是設置連接的不受干擾的方法。

public function setConnection() { 

     $apnsHost = 'gateway.sandbox.push.apple.com'; 
     $apnsPort = 2195; 
     $apnsCert = '../model/apns-dev.pem'; 

     $streamContext = stream_context_create(); 
     stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert); 
     stream_context_set_option($streamContext, 'ssl', 'passphrase', "********"); 
     stream_context_set_option($streamContext, 'ssl', 'verify_peer', true); 

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

    } 

對我來說這看起來很正確,但很明顯,這是不對的。

回答

0

以下教程中的simplepush.php代碼適用於我。 http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

$ctx = stream_context_create(); 
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem'); 
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); 

// Open a connection to the APNS server 
$fp = stream_socket_client(
    'ssl://gateway.sandbox.push.apple.com:2195', $err, 
    $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); 
+0

這實際上是openssl的服務器問題,我認爲。我改變了一些配置,現在它可以工作。感謝您的高舉。哦,不要使用verify_peer選項。 – 2012-04-05 18:54:02

+0

@TimLieberman您在服務器上所做的更改,請在此處填寫,以便我也可以檢查我的配置。謝謝 – Ron 2013-09-03 07:30:04

+0

@Ron我不記得問題是什麼或我們如何解決這個問題。我很抱歉,當我發現時我應該更新這個問題。 – 2013-09-20 13:38:09