Coming in iOS 6.1: Power Nap for iOS

Low hanging fruit

Popular consensus has it that iOS is pretty much feature-complete. Having delivered (to a greater or lesser degree) on all the obvious deficiencies such as copy and paste, multitasking, and notifications, there is little left to do except polish around the edges. Which pretty much sums up iOS 6 (leaving aside Maps, because... well... who hasn't?). After 5 years of breathtaking innovation and iteration, iOS has slowed to a crawl.

That's not to say that iOS couldn't do more. Hardcore nerds (take a bow) can point to numerous features that purportedly leave iOS trailing the competition. But haters always gonna hate. So far as Apple is concerned, iOS delivers everything that Joe Normal needs, without descending into the unfettered anarchy of Android's unwalled garden. Every new feature risks undermining the iOS learning curve, and Apple has found it's sweet spot. Familiarity and simplicity are features, remember...

Trade-offs

One of the best examples of Apple's careful balance between power and control is in relation to multitasking and background activities. If you aren't already familiar with how iOS manages multitasking, I can point you in no better direction than this article by Fraser Speirs. Go on, have a read now. I'll wait...

... are you done? Ok then.

iOS does a great job of balancing the trade offs inherent in multitasking. It isn't unique in the mobile sphere, but it is very elegant. Limited resources (power, memory, battery life) are balanced against functionality without imposing upon the user; in particular, the transition from "Suspended" state to "Active" state is sufficiently seamless to give the impression of true multitasking in most use cases.

But it does have its limitations; most obviously, in terms of the constraints on background tasks. The Verge staff frequently bemoan the "disconnected" feeling that iOS can exhibit, compared with Android. There are very few apps which have any ability to pre-load data before the user opens them - or, at least, can only do so in exceptionally limited circumstances. Android apps, by comparison, are free to act in the background as frequently as the developer and user permit. This carries with it a trade off in performance, stability, and battery life that Apple has shown unwillingness to tolerate.

Niche? Nein.

Are the background task limitations in iOS a genuine issue, or is it simply something that "power users" whinge about (no offence, Josh...)? In my humble - but considered - opinion, it is a real constraint on iOS. Loosening the shackles would provide tangible benefit to virtually every iOS user, not just the readers of The Verge (we are the 1%...).

The types of apps that would benefit from the ability to download in the background in a more liberal fashion are significant. Let's start at 7am and go from there:

  • You head downstairs to make a cup of coffee. Your news publication of choice (c.f. apps like Reeder, Instapaper, etc) would already have the latest headlines and features downloaded, waiting for you to peruse whilst the kettle boils.
  • Heading out the door, you put in your headphones. Huzzah! Your podcast app of choice has already downloaded the latest episodes for your aural pleasure!
  • Heading to work, your Facebook feed already has the latest posts, messages, etc waiting for you. So does Twitter/Tweetbot/etc. Not to mention that new Kindle book you bought online yesterday.
  • Over lunch you want to see the latest bidding activity on those flared jeans you are flogging on eBay. Oh look! No need to wait for a leisurely refresh - it's already there!
  • Heading home, you are tempted to watch the latest episode of Doctor Who on the brilliant BBC iPlayer app (other video services are available...). The programme has already been downloaded onto your device, ready for offline viewing (because, for most parts of the globe, cellular connectivity isn't yet ready for HD streaming on the move...!)
  • That night, you open up your TV guide app to see what's on. Lordy me! See how it has already downloaded the listings for me - I can't believe I used to have to wait for an eternity whilst stuck on a patchy EDGE connection just outside Finsbury Park!

... I could go on, but you get the point. iOS has a frustratingly reticent approach to data connectivity. How odd is it to receive a push notification containing the first few lines of a message, only to have to fetch the entirety of the message when you then open the app? Having helpfully pushed the first part of the message, is it really so hard to send me the rest?!

Back from the Mac

Apple is unlikely to 'liberate' iOS completely, in such a way that allowed apps to act in the background without restraint. Frankly, that would be far too unpalatable in terms of the impact that it would have on performance and battery life. But there is a half-way house, which might strike a better balance than the current arrangement - one which would have no negative impact whatsoever. In fact, Apple has already done it on OSX.

One of the key new features in Mountain Lion was Power Nap. This allows an SSD-equipped Mac to engage a low power mode whilst otherwise inactive/asleep, in order to update applications and data, and perform maintenance tasks, so that the system is fully up-to-date as soon as you lift the lid. Power Nap operates under narrowly defined circumstances; the device must be plugged in, asleep, and connected to WiFi. This ensures that there is no detrimental impact in terms of performance or battery life.

Aaaaand there it is. So blindling simple. iOS needs to allow apps to download and update data under those same conditions. Power Nap for iOS.

Of course, the stringent conditionality would prevent Power Nap for iOS from achieving 100% of the benefits of unfettered background performance. But it would probably take you 80%-90% of the way there - and all without the slightest concession whatsoever to battery life or performance. Automagically, as it were. The average user would appreciate the benefits without needing to even be aware of what was happening. They wouldn't even need to change the way they used their iOS devices - I'd venture that 95% of iOS users plug in their iPhone overnight anyway; and since the introduction of Do Not Disturb in iOS 6, it is now possible to do so without having to use Airplane Mode to disconnect the device from the internet. As Flight of the Conchords would put it: conditions are perfect.

The Prestige

Power Nap for iOS wouldn't really be a new feature at all. It would be a natural extension of an existing feature set.

The exact same conditionality which triggers Power Nap on a Mac (device plugged in, asleep, and connected to WiFi) is already used in iOS to trigger automatic iTunes WiFi Syncing and iCloud back-ups. So all that we are really talking about is extending existing functionality to third party apps.

In fact, several well-sourced individuals (including Rene Richie of iMore fame) have already hinted of such an API having been prepped for iOS 6, but pushing it back for some unknown reason. Moreover, it doesn't appear to have been held off for iOS 7: the tea leaves suggest it could be coming much sooner, perhaps in iOS 6.1. Which might (or might not...) be announced at the Keynote event on 23 October. How's that for a tease?!...