109
votes

How do iOS "push" notifications get delivered to a particular device without that device needing to poll a server?

For example, let's say I have received a new message on Facebook. Facebook notifies Apple that my device should receive a notification as such. But how does Apple know which device/IP to push the message to?

5
@Wain I am looking for a detailed explanation at a technical level. That article is extremely high level. So my device maintains an open connection with Apple's push servers at all times?Andy Hin
Im more familiar with android push, but typically, when you install the app it registers the device with a unique ID with Apple. Then when facebook sends a message to apple, apple will forward it to the devices unique ID.Panama Jack
@Pjack yep, but with my device constantly changing different cell towers, different wifi networks, how does Apple know the IP for my unique ID?Andy Hin
@whydna Thanks for asking this question. I wanted to understand precisely the same thing. I believe this answers my question here: stackoverflow.com/questions/18859732/…MightyMouse
@AndyHin The device OS (iOS) knows which APNs server(s) are valid. The device is connecting to these servers and keeping a connection open. This connection is likely associated with the device-id and other meta-data (phone number). When a message needs to be "pushed", the APNs finds the right connection and sends it down that already-open connection. So the APNs does not try to establish a connection to a device, it's always the device that opens that connection. One connection per device.Todd

5 Answers

56
votes

It was too much for me to put in a comment so.

From the documentation.

Apple Push Notification service (APNs) propagates push notifications to devices having applications registered to receive those notifications. Each device establishes an accredited and encrypted IP connection with the service and receives notifications over this persistent connection. Providers connect with APNs through a persistent and secure channel while monitoring incoming data intended for their client applications. When new data for an application arrives, the provider prepares and sends a notification through the channel to APNs, which pushes the notification to the target device..

I suggest reading the documentation for more information and how to use and configure. It's all there.

Push Notifications

99
votes

Each device can be updated with data using their own unique device tokens. This picture explains everything . .

enter image description here

23
votes

I created an infographic to explain the workflow of push notifications. Hope this is helpful.

enter image description here

13
votes

Device does not keep polling the server for the push notifications.

To keep it simple, consider an iPhone is connected to internet. On connecting to internet iPhone establishes connection to Apple Push Notifications server this connection is open connection which means data can be thrown to iPhone from server the moment data arrives to server.

Apple does not use HTTP protocol for Push notifications but if you understand HTTP Protocol its almost a similar methodology.

http://en.wikipedia.org/wiki/Push_technology#HTTP_server_push

2
votes

There is a really nice exaplanation of push notifications in this article.

In iOS, apps can’t do a lot in the background. Apps are only allowed to do limited set of activities so battery life is conserved.

But what if something interesting happens and you wish to let the user know about this, even if they’re not currently using your app?