2014-07-09 76 views
0

我使用蘋果推送通知在用戶向其發送消息時向用戶發送通知。 我使用的代碼在開發模式下工作正常,但是當我將我的應用上傳到應用商店時,我的用戶沒有收到通知。iOS推送通知不在Producation中工作:fwrite():SSL:破管

所以我創建了一個新的PEM文件按照本教程(同教程我已經使用producation)(但PRODUCATION認證):

http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1

**在蘋果會員中心的通知啓用分發模式

但是現在有一個問題,當服務器嘗試發送通知:

的fwrite():SSL:中斷的管道」

我的代碼:

$ctx = stream_context_create(); 
     stream_context_set_option($ctx, 'ssl', 'local_cert', 'file.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); 

     if (!$fp) 
      return; 

    $message = "Hello world"; 
    $deviceToken = "token..."; 

    // Create the payload body 
     $body['aps'] = array('alert' => $message, 
          'sound' => 'default'); 

     // Encode the payload as JSON 
     $payload = json_encode($body); 

     // Build the binary notification 
     $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload; 

     // Send it to the server 
     $result = fwrite($fp, $msg, strlen($msg)); 

     // Close the connection to the server 
     fclose($fp); 

我不知道該怎麼辦,我已經找遍了所有的網絡與不會有好結果的解決方案。 希望你能幫助我,謝謝=)

回答

2

你發送通知到沙盒服務器 - ssl://gateway.sandbox.push.apple.com:2195

你應該把它發送到生產服務器ssl://gateway.push.apple.com:2195

+0

這幫助我固定的水管壞了,謝謝=)但通知仍然不工作,現在服務器看起來像它的工作正常,沒有任何messagse或例外,但用戶仍然沒有得到通知。我還可以做些什麼? – user3783623

+0

@ user3783623確保您使用的是生產設備令牌(而不是沙盒令牌) – Eran

+0

我使用其他非生產設備令牌的設備對其進行了檢查,但仍然無法正常工作。我錯過了什麼? – user3783623