I understand that Blackberry push is the one, the only true "realtime push". Supposedly, this requires installing Blackberry software (hardware?) with the telcos.
iPhone implements push by polling every so often and quickly runs down my battery so I leave push notifications off. Blackberries can go for (almost) a day on a single battery charge while connected all the time.
How does Blackberry implement realtime push? Is it necessary to plug into the telco infrastructure for this?
A) Push Initiator (PI) (NOT the device, but the push content provider)
B) Push Proxy/Gateway (PPG) (this is BlackBerry's Infrastructure)
C) Push client (BlackBerry device)
An example push message in a confirmed (ie. connection-oriented) manner:
1) The content provider (PI) sends a PAP push request to the BlackBerry Infrastructure (PPG). This request includes a list of the subscribed BlackBerry devices to which the data should be delivered, as well as the data to be delivered. 2) The BlackBerry Infrastructure returns a response to the content provider, acknowledging receipt of the request, and queues the request for delivery. 3) The BlackBerry Infrastructure pushes OTA the data to the specified BlackBerry devices. This doesn't have to be only a notification of new content; I think content (up to 8KB in size) can be pushed. 4) Each BlackBerry device returns a response to the BlackBerry Infrastructure, acknowledging receipt of the data. 5) The BlackBerry Infrastructure forwards the acknowledgement on to the content push initiator. 6) The Read notification is returned to the BlackBerry Infrastructure.
(One-way push only does steps 1. and 3.)
The push (step 3.) actually works through a Network Operating Center (NOC). RIM is able to do this because the BlackBerry device necessarily registers itself with a Telco, which then forwards the information on to the RIM NOC. The result is that the NOC now knows exactly where to push a message to. This is also the reason why a normal data plan is not adequate to give a BlackBerry push services. The PPG is able to send a Session Initiation Request to a device in a connectionless manner using e.g. SMS, indicating that it wants to push some content to a specific application on the push client. Content can be pushed in this manner as well. I think there are two protocols, PAP between a Push Initiator and the Push Proxy/Gateway, and Push OTA between the Push Proxy/Gateway and the device. If you're interested, the Open Mobile Alliance has a lot of technical documents that are publicly avaiable.
So, yeah, Blackberry's push is special, and it's necessary for them to plug into the telco infrastructure to do this; however, as an app developer, you just have to register with BlackBerry and use their APIs. Regarding the iPhone,I think Apple Push Notification Service is something like a "mini-NOC", that only does notification and isn't as full-featured as BlackBerry's, and is otherwise "push-like" by keeping open a session/polling.