2013-10-16 16 views
7

Tôi đã phát triển tập lệnh bằng cách sử dụng stream_socket_client() và nó hoạt động trên máy chủ cục bộ của tôi nhưng khi tôi cố gắng sử dụng nó trực tuyến (với Fatcow.com lưu trữ web) nó sẽ không hoạt động. Tôi nhận được lỗi sau:Làm cách nào để sử dụng Thông báo đẩy của Apple nếu bạn không thể sử dụng cổng 2195?

Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Connection refused) in .../send-notification.php on line 18 Failed to connect 111 Connection refused

Đây là dòng 18:

$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);

Tôi biết rằng mật khẩu cho các tập tin .pem nào là đúng. Câu hỏi sẽ trở thành nếu tôi không thể sử dụng cổng này tôi phải làm gì? Có dịch vụ miễn phí nào tôi có thể sử dụng không? Tôi biết rằng cổng 80 đang mở.

Tôi đã nghe nói rằng việc sử dụng chức năng curl() sẽ hoạt động nhưng đã không thành công.

Tôi thực sự đánh giá cao việc chỉ đúng hướng.

+0

Tôi cho rằng nó là nhà cung cấp các khối kết nối gửi đi, hoặc thậm chí máy chủ táo của –

Trả lời

8

Để gửi thông báo tới thiết bị, cần bật cổng 2195 trong tường lửa. Vì lý do bảo mật, một số tổ chức vô hiệu hoá các cổng này trong tường lửa. Cổng 2196 được sử dụng cho các dịch vụ phản hồi và cổng này cũng sẽ mở trong tường lửa. Không mở các cổng này, các tin nhắn không thể gửi đến APNS.

+0

Làm thế nào để mở các cổng trên máy chủ Amazon EC2? –

0

thử sử dụng cổng 2196.

Tôi cũng gặp vấn đề tương tự, ngay cả với cURL bạn sẽ gặp phải sự cố này. Kiểm tra kỹ với nhà cung cấp dịch vụ lưu trữ của bạn cho dù cổng đi (2195,2196) được mở hay bị chặn. Hoặc thử telnet ssl://gateway.sandbox.push.apple.com:2195
và kiểm tra phản hồi của bạn. Nếu các cổng được mở, bạn sẽ được kết nối.

0

Tôi gặp sự cố tương tự với nhà cung cấp dịch vụ lưu trữ hiện tại của mình. Bạn có thể chuyển sang nhà cung cấp khác - hoặc - Đơn giản chỉ cần 'mua' một LAMP VPS ngân sách (3 euro/tháng). Và bạn tốt khi đi

0

trong mỗi máy chủ chia sẻ, họ vô hiệu hóa cổng 2195 để bạn có thể yêu cầu kích hoạt cổng này nhưng trong hầu hết các công ty lưu trữ chia sẻ, không bật cổng này vì vậy nếu bạn muốn thực hiện thông báo đẩy ios tôi khuyên bạn nên sử dụng Virtual Private Server (VPS) và bạn có thể dễ dàng cấu hình thông báo đẩy ios.

3

Tôi tin rằng đây là những gì bạn đang tìm kiếm

$url = 'https://gateway.sandbox.push.apple.com:2195'; 
$cert = 'AppCert.pem'; 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json")); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_SSLCERT, $cert); 
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, "passphrase"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"device_tokens": ["458e5939b2xxxxxxxxxxx3"], "aps": {"alert": "test message one!"}}'); 

$curl_scraped_page = curl_exec($ch); 

biết thêm chi tiết có thể được tìm thấy ở đây: Apple push notification with cURL

+0

là bạn '$ url = 'https: //gateway.sandbox.push.apple.com: 2195';' sẽ hoạt động khi '2195' bị chặn? Đây là những gì chúng tôi đang thảo luận ở đây. – Ans

+0

@Ans OP không bao giờ đề cập rằng cổng bị chặn. Đây chỉ là một giả định. OP chỉ nói rằng nó bị từ chối. –

Các vấn đề liên quan