Developing for iOS 7

iOS 7 Australian Developers App Icons

Since its debut at WWDC in June of this year, there’s been an immense amount of discussion about changes to the end-user experience that comes with iOS 7. most of that has been around how hideous the new icons are, but what hasn’t been discussed all that much publicly—partly due to those pesky NDAs—is the amount of change to the APIs and frameworks that developers use to build iOS apps.

Over the last few weeks I’ve had the opportunity to pick the brains of a handful of top Aussie iOS developers, including Russel Ivanovic of Shifty Jelly, Marc Edwards of Bjango, Mat Peterson of Shiny Things, Dave McKinney of Filter Squad and Jason Harwood of Halfbrick Studios about the scope of those changes and how each of them had approached the design and implementation challenges around bringing their apps to iOS 7.

So if you can imagine that, to the same extent that the UI and OS has changed for end users in iOS 7, that volume of change is also present in all the underlying APIs…”

— Russell Ivanovic, Shifty Jelly

Changes inside and out

Many of the new APIs & frameworks introduced in iOS 7 are—of course—related to the redesigned user interface; for example, there are all new text rendering APIs. and a brand new view transition framework that developers have to get their heads around.

For apps with user interfaces which rely heavily on UIKit—the framework of user interface elements provided by Apple—this can mean going back to the drawing board and potentially, completely redesigning their app’s user interface.

Even seemingly minor user interface changes—such as the status bar no longer being separate from the app in iOS 7 (as it was in iOS6) can be a stumbling block, especially when trying to maintain backwards compatibility with iOS 6 while also updating an app for iOS 7.

As it turns out, there are many more new APIs which highlight fundamental changes in how iOS behaves at the operating system level. One of the best examples of this is the completely new set of backgrounding APIs introduced in iOS 7.

Russell Ivanovic from Shifty Jelly
Russell Ivanovic from Shifty Jelly

Unlike previous versions of iOS, iOS7 grants apps the ability to initiate tasks in the background on a schedule or in response to push notifications. For an app like Pocket Casts, for Adelaide-based developer Shifty Jelly, this opens the door to a feature that—while technically possible—has always been too difficult to implement, troubleshoot and support on previous versions of iOS: automatic background podcast downloads.

Adding new features based on APIs present only one version, along with the differences in user interface construction behaviour, can lead to incredibly complex and bloated code when trying to support multiple versions of iOS. This problem is only magnified when you introduce iOS 7 into the mix.

As the team at Shifty Jelly has found in the past, Apple’s stance on backwards compatibility issues often isn’t the most helpful. They suggest that developers simply drop support for previous versions of iOS altogether. Their logic is that 99% of users with a compatible device will upgrade to the latest release. If users say they don’t have a compatible device, devs should just encourage them to buy a new one.

In the case of Pocket Casts, not only did going iOS 7-only make the best technical sense, it also made the best business sense, as the majority of their user base was likely to be on the latest version of the OS.

Similarly, for David and the team at Perth-based Filter Squad (makers of Flipcase, the quirky iPhone 5c case game), it made sense to release their music sharing and discovery app Discovr as an iOS 7-only app.

Filter Squad: Stuart Hall and Dave McKinney

Stuart Hall (left) and Dave McKinney (right) from Filter Squad

There are a lot of advantages for us with supporting the latest OS only. In particular it means we can give the best possible experience to our users by taking advantage of all of the 7 system features.”

— David McKinney, Filter Squad

Discovr was already undergoing a complete redesign and overhaul which made the move to iOS 7 relatively straightforward. As with Pocket Casts, the audience for Discovr is also likely to be on the latest version of the OS, making it a no-brainer.

Backwards compatibility

Mat Peterson from Shiny Things
Mat Peterson from Shiny Things

One sector of the market which is slower to update to the latest release of iOS that the general population is Education which, coincidentally, is also the market that Shiny Things is targeting with the latest release of Quick Maths+ (for more, you can read James’ review of Quick Maths+).

For Mat and the rest of the Sydney-based team at Shiny Things, this meant that dropping support for iOS 6 simply wasn’t an option, and the split in their user base meant that they had no choice but to tackle backwards compatibility. While they had a head start with the already minimalist user interface of Quick Maths, deadlines combined with some of the fundamental changes in iOS meant that, at the time of release, the iOS 7 version of Quick Maths+ doesn’t live up to the high standards that the team at Shiny Things have set for themselves.

Another reason that a developer would want to maintain backward compatibility is to keep the audience for their app as broad as possible, which is exactly what Brisbane-based Halfbrick Studios, creators of the highly-addictive Fruit Ninja and Jetpack Joyride, aim to do.

The goal is to ensure that their games run on as many devices as possible while still providing the end user the optimal experience on their device, irrespective of hardware or software. To that end, their current minimum OS requirement is well below iOS 7 and it will be for a long while.

“Updating games as opposed to ‘apps’ for iOS 7 has been fairly painless so far.”

— Jason Harwood, Halfbrick Studios

Jason Harwood from Halfbrick
Jason Harwood from Halfbrick

Unlike most app developers, game developers like Jason and the team at Halfbrick generally create their own custom user interfaces which reflect the aesthetic of the game rather than the underlying OS. As a developer they also try to work smarter, not harder, when it comes to implementing new shared features across their titles. Their aim is to write code once, bake it into their game engine and development tools, so that it can be reused in all their titles, regardless of their age. All of which has made their transition to iOS 7 relatively painless.

That’s not to say it hasn’t been without it’s challenges. New releases of iOS have always suffered from performance issues on older devices, and iOS 7 is no exception. Even with some features disabled, many iPhone 4 users are finding that iOS 7 runs slower on their device than its predecessor.

This, of course, impacts the performance of apps and games running on the device as well, meaning that Halfbrick have to do additional tuning to ensure that iPhone 4 owners running iOS 7 still get the optimal experience when running one of their games.

Beginnings & endings

As we’ve seen, for some apps iOS 7 is a chance at a new beginning. For some it’s simply a chance to evolve and for others it’s business as usual. For a few apps, it marks the end of the line.

Marc Edwards from Bjango
Marc Edwards from Bjango

One such app is Consume from veteran iOS and Mac developer, Bjango.

Consume is an app that has lived on the front screen of my iPhone since it was released and has proved invaluable in keeping track of my mobile and home internet usage. Naturally I’m disappointed that Consume isn’t going to get updated but I completely understand their reasons for discontinuing the app. Consume, has gone as far as it can and if putting it on a shelf frees Bjango up to work on new, interesting and exciting projects, then I for one am okay with that because I cannot wait to see what they do next!

For Marc Edwards, it wasn’t easy choice. “The decision had many facets,” he said. “iOS 7 adds a lot of APIs we can take advantage of, but to do so would require a lot of work. We also have a few other projects we’re committed to, so something had to give. We want all our apps to be current and great, so removing Consume from the App Store felt like the best path to take, and the path that respects our customers the most.”

The ‘few other’ projects that Marc referred to are the much-anticipated Skala for Mac which is currently in development and Skala Preview and iStat 2 for iOS, both of which are in for big design updates. However, Marc and the team at Bjango aren’t rushing things. “We want to take our time and consider the changes we’re making, rather than just switching to a white frosted nav bar and rushing to be on the store early,” Marc says of the updates.

Marc also echoed Russell’s frustrations with the status bar changes in iOS 7, as well as highlighting the significant issues with the iOS 7 picker:

Side by side comparison of the pickers from iOS 6 & 7

It’s not all doom and gloom though. I got the sense from every developer I spoke with that it’s an incredibly exciting time to be both an iOS user and developer.

For Jason it’s brought new life to his devices. “My iPhone and iPad mini feel very new to me again which is very cool.” He also sees the hardware advancements as a boon: “The addition of the 64 bit processor to the iPhone 5S is certainly a welcome advancement for game developers,” although due to the nature of the games that Halfbrick creates, it’s not something that he can see them able to leverage in the near future.

For Marc, his course is set. “iOS7 is the future. There’s no turning back. And, despite my complaints, it’s a great update.” He also thinks there’s potential in the new hardware: “Touch ID could be amazing, if Apple open it up to third party developers.”

Mat sees huge potential for AirDrop and thinks that “the combination of new iOS devices and iOS 7, introduces some very interesting and simple ways that teachers and students can interact.”

David wrote at length about his feelings towards iOS 7 on his blog, which is definitely worth a read.

And as for Russell, “iOS 7 is the version of iOS that Pocket Casts had always needed, but never had. If we didn’t go all-in we’d be idiots.”

Sure there have been some teething issues, both for developers and end users, but over all it looks like iOS 7 has been a big step in the right direction. Here’s hoping Apple can polish off the remaining rough edges and, in the long run, deliver on the promise of iOS 7.