Push messages are all from apple push server, one for each environment: sandbox and production.
You need to build a push client to send message to Apple push server in PHP or ruby. Push client needs ssl certificate from apple. To get it, enable push feature in your AppId, import cert, then create new provision file.
Considering Xtify or UrbanAirship if you or your clients don’t have your/their own VPS. Both Xtify and UrbanAirship offer free tier membership, 1 million push messages per month.
Documentation from Xtify and UrbanAirship are a little bit different, Xtify needs you export private key under APN certificate item as push certificate, while UrbanAirship document stated that you need to export the APN certificate itself (not the private key under), otherwise when exporting certificate, it will report error saying you are importing a development certificate.
(Update at 2012-07-21: I couldn’t get message sent from Xtify server for my new app, re-export the dev certificate from root instead from child, upload this certificate, problem solve. This is consistent with UrbanAireship then, while the Xtify doc did state this very clear, Right click and export this key as .p12 format. should be right click on ‘Apple Development iOS push service’ to export, not on your name.)
Xtify doesn’t need credit card to register, UrbanAirship won’t allow you create App for production until you give away your credit card number.
Xtify has a magic schedule settings, forgetting set this will cause not sending message, ensure to activate it and check measurement report before you revoke your certificate and start over.
Support response from UrbanAirship is mush faster, my first question was answered in 3 hours, amazing.
Call Apple feedback service frequently to eliminate inactive device from your send out list.