How (and why) do 3rd-party iOS 6 apps communicate to their makers when they are not the active app?

I've noticed from my DNS logs that domains associated with a small minority of my 3rd-party apps are accessed approximately every half hour or every hour, even when the relevant app is not active, and even when the phone is locked.

My understanding in the past was that 3rd-party apps do not execute unless they are the active app, and that notifications all come through a centralized Apple service. What mechanism is being used to allow this communication, and what reasons are there for these apps to need to phone home so frequently when there is no app activity?


Solution 1:

Apple documents high level functionality in an article on background processes:

  • iOS: Understanding multitasking - http://support.apple.com/kb/HT4211

You could look at archive.org to look at a version of this for iOS 6, but pretty much everything from iOS 7 applies in iOS 6 except for the new "background app refresh" functionality.

If you wanted a deeper understanding on how multitasking works, I would start with this section of the developer documentation:

  • App States and Multitasking

Without capturing APNS traffic (or using Instruments to trace the OS while it runs), it's hard to tell if 30 minute access are a result of Local Notifications or perhaps push notifications being sent from the server side causing the app to wake periodically. Hopefully this is enough to get you started on tracking things down.