But there is a middle ground. Like already mentioned, if you register for location updates you can do a small amount of processing when your device moves and the OS wakes up a (very small) portion of your app to respond to it. If your app runs for too long here it will simply be killed.
Apple has created a very small number of cases where an app is even allowed to do this, which puts a huge cap on what people can do with it. The IM case is the most egregious: I can get a push notification saying "Bob messaged you: Let's meet up at..."
You tap on the notification, your app opens. It has to load from a cold start. Then it has to go to the server and fetch Bob's message to you, even though your notification obviously already had it. All in all, it's 10-15 seconds before you're actually reading the message, which is unacceptable.
Oh and and inter-app communications channel you're after is it? http://audiob.us