11-24-2010, 09:35 AM
I did a bit of research about push notification on iPhone and the best explanatory text is here:
Basically, in regard of a iPhone user which activated the push notifications (one or more apps using it, being the same thing), the Apple's APNS server mantains a "persistent IP connection" with your iPhone in order to deliver notifications when the app (Facebook, email, eBuddy a.s.o) needs to 'say' something to you.
The notification itself it's a 256bytes of data (at most). But what I wanted to know is how the "persistent IP connection" works and how it's translated in data usage on the iPhone and in battery consumption.
It is established that push notifications will work either with a data plan (using cellular data) or over WiFi. On other words, your push enabled iPhone will send/receive bits of data frequently with APNS in order to be ready for any push notification. This can be demonstrated by checking the Usage window (in General Settings) from time to time and see the cellular data usage grow some Kbs every 10 minutes or so. If you are on Wifi, this way of data transfer is preffered (in order not to make traffic on user's data plan) and the "persistent IP connection" is done trough Wifi.
That explains also why the iPhone consumes more battery in an area without WiFi connection if you have Wifi enabled and push enabled - during this permanent connection with APNS the iPhone tries to use Wifi (seeing it enabled) searches for a Wifi network, it does not find it, then goes to use cellular data. All this searching for WiFi network frequently consumes battery.
That explains also why with push enabled an iPhone consumes more battery on 3G rather than on EDGE/2G (3G disabled) - because every 3G connection uses more battery because it requires connection to at least two carrier towers (as opposes to only the closest tower on EDGE/2G) and that translates to increased power (Watts) from the iPhone.
Unfortunately disabling 3G is not really an option for iPhone users (especially on iOS 4.x.x) because on EDGE/2G you can't receive calls while a data connection is in progress (you browsing the Internet or push notification keeping that "persistent IP connection" with the APNS - which is also data, or a faulty app like Skype in the background sending data). But that's another explanation (3G/EDGE explained).
If you want push notification (a very nice functionality) - enable 3G, enable WiFi only(!) where you have a WiFi connection - and be prepared for only one day of normal use of the iPhone, or even less if you are a heavy user of apps that require data transfer on 3G
If you want two days of using the iPhone (mostly for calls) - disable push notification, set Manual Fetch to your email accounts, enable 3G (in order not to have missed calls because of the EDGE/2G impossible voice over data)
If you want three days of using the iPhone - disable push notifications, set Manual Fetch to your email accounts, disable 3G (but be sure there is no app in the background using data connection), and set Airplane mode during the night (understanding you will not be able to receive any calls during that)
Note: The above are for the iPhone 3GS, as for iPhone 4, having a 1420mAh battery vs 3GS's 1219mAh, it should last two days with push and three days without push.