I want to send APN (Apple Push Notification) from PHP script. My PHP script is working fine and I receive notification in the iphone device as well when sending from localhost but when I upload the same script with same .pem file to the shared server
it returns error...
Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.push.apple.com:2195 (Connection refused) in /mypath/SendPushNotification.php on line 28 Failed to connect: 111 Connection refused
From some source I get to know that to send APN port 2195 must be open which is not possible in the shared server plan. So I tried using dedicated server and it's working perfectly and I receive the notification on the device. I tried hard to find the solution for shared server but didn't find any solution.
My question: is it possible send APN without opening port 2195 from shared server? if Yes give some guidance.
No, Its not possible to send APN message without using 2195 port.
If you want to send push notification message from shared server, try using some third party tools like http://urbanairship.com/.
Some time ago I got the same error, and then I found that it ocurres because of the server, the proxy is blocking that port, because most of servers doesn't use that port as a common one(80 or 21).
In this case you could try asking for support on your server reseller , they can open that port (2195) for you, If your take this solution I would recommend also asking to open the port 2196 that port is used for feedback.
Another solution is to use a free push notification provider, like Parse which is really easy to use and implement on your app, also you can use UrbanAirship, but I preffer Parse ;)
Hope it helps
This is irritating and definitely port 2195
issue. Chat with your hosting provider and ask them to open the port. I also had same issue. My Local code was running peacefully in every condition like sandbox
and production
but it was failing on the server.
Dont get confused about .pem
file path and that would be simple corresponding to your code. For me i put my certificates (.pem)
in a directory named certs and gave path like this:
$apnsCert = 'certs/cert_prod.pem';
The code was not working on my apps production server. I wasted one and a half day on this but that ran great on first run when i put that on application's staging server. Reason!!!! Definitely port 2195
issue.
All the beat.