来自php的APNS连接返回连接超时

时间:2015-07-02 17:07:59

标签: php ios push-notification apple-push-notifications

这是我用于从PHP到iOS的通知的代码

#--------------- initializations ------------------------------
      $message           = substr($message, 0, 255);     
      $sound          = 'default';
      $development    = true;
      $badge          = '1';
      $payload['aps'] = array(
                               'alert' => $message, 
                               'badge' => intval($badge), 
                               'sound' => $sound
                             );
      $payload        = json_encode($payload);
      $apns_url       = NULL;
      $apns_cert      = NULL;
      $apns_port      = 2195;
      #-------------------------(/initializations)---------------

      // developement or live server certificate
      if($development)
      {
          $apns_url = 'gateway.sandbox.push.apple.com';
          $apns_cert = __DIR__.'/app_dev.pem';

      }
      else
      {
          $apns_url = 'gateway.push.apple.com';
          $apns_cert = __DIR__.'/app_prod.pem';
      }

      $stream_context = stream_context_create();
      stream_context_set_option($stream_context, 'ssl', 'local_cert', $apns_cert);

      $apns = stream_socket_client('ssl://' . $apns_url . ':' . $apns_port, $error, $error_string, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_CONNECT, $stream_context);

      $device_tokens  = $receivers;


      foreach($device_tokens as $device_token)
      {
          $apns_message = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $device_token)) . chr(0) . chr(strlen($payload)) . $payload;
          $result = fwrite($apns, $apns_message,strlen($apns_message));
      }

      @socket_close($apns);
      fclose($apns);

我得到的错误是

  

警告:stream_socket_client():无法连接   ssl://gateway.sandbox.push.apple.com:2195(连接超时)

有人可以看到代码有什么问题吗?我读了很多与此相关的帖子,但没有什么能帮到我。

0 个答案:

没有答案