Push Notification Service: Apple’s Solution to run iPhone Apps in the background

Apple had recently seeded developers of iPhone’s developer program with the second beta version of iPhone firmware 2.1 which included early Push Notifications APIs that allows applications to process notifications in the background.

The Push Notification APIs is a solution for one of the features that we have been asking for, ability for native iPhone apps to run in the background.

Native iPhone apps thus far cannot run in the background, and therefore cannot ping for data unless you’re running them explicitly which is something most of us have been accustomed having used smart phones such as Blackberry.

This was the reason why iPhone users and developers have been requesting Apple for a feature to allow iPhone apps to run in the background.

Scott Forstall, Senior Vice President of iPhone Software at Apple, believes that enabling background processes is not the right solution when it comes to mobile phones, as it would affect the iPhone’s battery life and degrade performance.

We have already seen Push services affecting battery life based on the basic push features available in iPhone firmware 2.0.

As for performance, the impact is quite obvious, any additional program running in the background would use up some of the phone’s CPU thus degrading performance of other running programs.

Apple is looking to solve this problem by offering developers with push notification service for no additional cost. Apple believes that this unified push notification service for developers is a much better solution, not only would it be scalable but it will also preserve battery life and maintain performance.

So how will Apple’s Push Notification Service for iPhone work?

Apple's Push Notification Service for iPhone

Based on information available so far, Apple will maintain a persistent connection to the iPhone, so a developer’s server can ping Apple’s notification service using APIs to relay notifications to the iPhone, allowing any iPhone App to continue receiving data while inactive.

Developers can push one of three different types of notifications i.e. counters badges (for something like a new e-mail message), audio alerts, and pop-up messages that look similar to text alerts.

So as an example it will let an instant messaging application notify iPhone users of a new message so that they can launch the app to receive the new message without the need for the instant messaging app to run in the background.

All this works over the air i.e. over the Wi-Fi network and the cellular network.


This seems to be a good workaround to the problem of running iPhone applications in the background on a resource constrained mobile phone. However, the only concern is that iPhone apps will be dependent on Apple’s push server infrastructure that so if any portion of this centralized infrastructure fails, it could result in the iPhone applications not working as expected.

The iPhone SDK 2.1 which has been recently seeded to iPhone Developers providing them with early Push Notifications APIs to access these services. It is expected that these services will be available to iPhone users in September 2008.

Whats your opinion about Apple’s Push Notification service?


Top iPhone Hacks Categories:

iPhone Applications
Unlock iPhone
JailBreak iPhone
iPhone Tips & Tricks
iPhone Games
iPhone News 


What next?

Like this post? Share it!

  • TJ

    Are you friggin kidding me? This is SO not the same as background processing. I want BACKGROUND processing for things like AIM and programs that I close and open frequently, like Maps. That's all I ask! So far not many programs have been designed that would benefit from background processes, but that's only because it isn't available! Remember all the software for the hacked iPhones that needed background processing to get things done? How awesome were those?

    Apple, this is a simple effing solution: make all developers put an option on there software to enable/disable background processing. This would give people the option of actual usefulness, minus some processing power, but also give them the option for maximum processing power for all those CRAZY tasks the iphone does like, y'know, hacking into the friggin pentagon. WHAT THE HELL DOES IT NEED PROCESSING POWER FOR?! Cocoa does all the animations and graphics with literally 10% of all available processing power, and the most intensive application is safari, which only uses around 35% of available power. So please Apple, tell me, what BULL**** is running that uses up the rest of that power? Cuz I honestly can't think of anything. Is it the iPod part? I honestly think that you could find a way to run both the iPod functions and ONE other program easily, by making the iPod auto-switch off the background processes. Why can't Apple developers think of these things?!

  • kody epperson

    i kind of agree with this dude ^.

    why not make it our choice to keep things on in the background? if our phones are running slow… WE can shut off the program. that simple.

  • Caco Potoso

    Completely agree with posts above. This "solution" by apple is completely ludicrous. If *I* want my iphone to run bkground apps than I should be able to do it (which I do, since I have a pwned iphone and there are nice apps in the cydia installer–which is way better than the itunes app store). Apple is fudging again. They made a nice product and they still can't get it that we want the product to realize its full potential as a phone/ipod AND AS A COMPUTER (it is way more powerful than some of the old pcs I ran linux only about 10 years ago).

  • ditto ditto ditto

    Why so many lock downs? Apple would make so much money if they would open up the system to all developers and all carriers. They have invented the first sucessful PERSONAL computer. If Apple does not do something android is going to take that away from them.

  • Bourne

    It would be too hard for teh mass market consumer to manage. Everything has to be done by apple automatically.

  • TJ

    I'll repeat my earlier post in a slightly nicer tone and a little bit simpler speech.

    Apple, I know you have people reading this site, trolling for ideas, and looking for hacks we come up with so you can shut them down in the next firmware release. I don't care about that. What I care about is my ability to utilize the true power of the iPhone's processor to perform background processes. This would NOT significantly affect my battery life if background processes are simply relegated to mundane tasks such as email/IM checking, or playing music through programs such as AOL Radio, Pandora, or Last.FM

    The solution is simple, cheap, and leaves the option of background processing entirely up to the developers, provided they give users the right to turn it off.

    Your current solution, Apple, is to create large server farms that generate excessive heat pollution and waste, and use large amounts of power and expensive equipment. How is this solution better than giving the consumers what they want? You are needlessly spending money and manpower to do something that very few developers will want to use because of the hassle of uploading data to YOUR servers. Most developers have their own servers because most products using the Push API are available for desktop use as well, meaning they were designed before your solution existed, meaning they don't NEED your solution.

    This is just a warning Apple: Don't try to become Microsoft, taking over every little aspect of your systems' connectivity. They tried that already and lost 4% market share to you. If you continue with this hairbrained Push Server idea you will PUSH your customers away and all you'll hear from M$ will be "you got SERVED"

    Dear god I love puns.


  • COPY/PASTE… very issential.. dont forget to include it in 2.1 Apple

  • Mikebeuler

    I like the idea of giving users the ability to turn it on and off. Better control is always a good thing.

    When I heard that Apple was doing this, I thought it was brilliant. Currently most devices such as smart phones run services without having any tasks to do. This system seems to awaken the application (or Service) when the user calls for it or if there is a task to be accomplished (such as an IM). This will result in better battery life and performance for the iPhone.

    Other OS manufacturers will probably follow this model.

    The amount of extra servers needed to run in this way is no more than normal. I would imagine that servers would sends out a small summary of the task (10 kb) to be accomplished. The user would see (in the case of an IM) that a buddy has sent them a message. The user can then open up the app and use it freely. This is better in my mind than having an application run for three hours until someone sends an IM and having done nothing more than that in that three hours.

  • I agree with Ibrahim… CONTROL is what is important. I'd be fine with background apps running in principle, but what this smells like to me is the potential for (in even larger letters than all caps) SPYWARE, if not just crappy programs. Just because I start running JoeSchmoe's free list-calendar sync program, how do I know his buggy development isn't going to leave stray code running on my phone all the time, even after I have deleted his app because it was worthless? I just think of the pain I have to go through every month reviewing all my running processes on my laptop, and searching out how to keep them from automatically sapping my resources. And that is from the legitimate software (AVG, Adobe, Apple)! Then again, I have a PC, so maybe it's my fault.

  • Hey i think i have a solution on how apple can still use there push idea and not have anything running on the phone and how developers can get background process.

    If apple could create an api simular to how to [NSThread detachNewThreadSelector:@selector(function) toTarget:self withObject:nil] works.

    we developers save a class file with our functions in our app directory with a certain name. Now each time our app get a pushnotication our class code load into member and execute the codes , save what ever configuration then auto release itself.

    This class file should also be able to execute our app and send param to it. 😀