iOS 7

Better late than never, a blog about iOS 7! I want to talk about some different subjects concerning iOS 7 both from a user’s as from a developer’s perspective.

New design

Obviously the first thing to notice when you update your iPhone or iPad to iOS 7 is the totally new look. This is what the Apple developer docs say about it:

The iOS 7 user interface has been completely redesigned. Throughout the system, a sharpened focus on functionality and on the user’s content informs every aspect of design. Translucency, refined visual touches, and fluid, realistic motion impart clarity, depth, and vitality to the user experience. Whether you are creating a new app or updating an existing one, keep these qualities in mind as you work on the design.

In other words: they got rid of all the details and simplified everything. They got rid of most shadows, borders, gradients and so on. It reminds me a lot of how Windows Phone’s UI is designed. They also focus more on the actual content now, instead of nice looking borders that just take up space. Take for example Safari, all controls move out of the way when you’re scrolling through a web page, so the content is (almost) full screen. Also e-mail is now displayed edge to edge for more horizontal space for the e-mail contents.

Adoption rate

See https://mixpanel.com/trends/#report/ios_7. Click on “Day” for a complete overview until day 1 of the iOS 7 release. You can see users are installing the new version of iOS at a very rapid pace. At the moment of writing this blog the percentage of users running iOS 7 is 77,55% and the users running iOS 6 is 19,49%. So when you develop a new app, or create an update for an existing app, you can decide to drop support for iOS 5 and below because almost every device has at least iOS 6 installed.

This is not the first time the adoption rate is this high. New iOS versions tend to get adopted rather quickly every time. This is one of the things that make developing apps for iOS much more attractive as opposed to other mobile platforms. For example take a look at how Android is doing: http://developer.android.com/about/dashboards/index.html. As a developer, this is a total nightmare if you want to support most devices.

How to update your app’s design for iOS 7

As a developer with an existing app, how do you optimize your app for iOS 7? With previous versions of iOS, this wasn’t usually much hassle. You just needed to update some code, as some API methods became deprecated or behaved a little different than before.

This time around when you compile your app against the latest Xcode, chances are, your app looks like shit. This is because when you use native UI components, they are now automatically converted to the new iOS 7 style. Most apps use a mix of custom styling and native components so those apps will look like Frankenstein / hybrid versions of those apps. Luckily this doesn’t happen to existing apps in the App Store, only when they get recompiled by the developer.

Because your app looks horrible now, you’re almost forced to update the complete styling of your app. Which is, in my opinion, a fun challenge but unfortunately takes a lot of time to do right.

Before you redesign your app you have to make a choice. Do you still want to support iOS 6? For previous iOS updates, this wasn’t something that was debatable. When iOS 6 came out, apps still supported iOS 5, because there was no effort required in doing so. There are a bunch of different approaches I have seen app developers take to support iOS 7:

Simply drop support for iOS 6. This can easily be done because the adoption rate is at such a quick pace, that iOS 6 will probably disappear within a year. Also, users that are currently still on iOS 6 and want to purchase your app, get the option to download an older binary of the app. This is a feature that was recently introduced in the App Store. The drawback is that you cannot provide any bug fixes for iOS 6 users anymore because they’re stuck on the old version of your app.

Support both iOS 6 and 7. This is quite a challenge. I did it this way with one app, and I ended up with lots of if (iOS7) { … } else { … } throughout the codebase to support both designs. The advantage of this approach is that all your users can still enjoy the latest version of your app, with all the latest features and bug fixes.

Because supporting iOS 7 takes a lot of effort, developers sometimes feel they have to get payed for providing the update. Unfortunately the App Store doesn’t allow developers to ask money for an app update. They found a workaround. They just re-release an iOS 7 only version of their app and remove the old iOS 6 app from the App Store. Existing users are kind of forced to buy the new app if they want to get the new fresh looking iOS 7 design of the app and keep getting bug fixes and new features. Users are usually not happy with this approach. But I can understand it from a developer’s point of view.

I think this is a huge addition to iOS. This will make iOS a bigger gaming platform (which was already getting pretty huge). iOS now has all the ingredients to do something similar to what Nintendo is doing with the Wii U. Using a Wii U, you can play games combining a tablet with your TV to create quite a unique gaming experience. Using AirPlay together with an Apple TV, iOS games can accomplish almost the exact same thing. Games can stream to the TV, while you use your iPhone or iPad as the controller.

A good example of a game using this approach is Real Racing 2 which uses the iPad as the controller and displays track information, while you see the actual race action on the big screen.

Another one is Motion Tennis which allows you to play a tennis game Wii-style.

I’m not sure why I can’t find many more games like these, but if there will be many more games like this, Wii U will have a tough time. Especially combined with the new iOS 7 game controllers.

M7 chip

With iOS 7 and the iPhone 5S, iPad Air or iPad mini Retina, apps can utilise the new M7 co-processor. It’s a tiny processor taking up a few square millimeters in space, which takes care of accessing all your devices sensors (accelerometer, gyroscope, etc) and gathering data. This prevents the main A7 processor from having to do all that, which is much more power hungry than the efficient M7 chip. This is most interesting for fitness apps. Previous fitness apps had to make the main processor do all the work, which made it impossible to make your iPhone’s battery last for more than a couple of hours. Now with the M7 chip, apps can monitor your sensors all day, without draining the battery much.

So the M7 chip doesn’t introduce new possibilities per se, but instead makes gathering sensor data over a long period of time much more power-efficient.

To use the M7 chip as a developer, you have to use the new Core Motion framework. This is what the developer docs say about it:

The Core Motion framework (CoreMotion.framework) adds support for step counting and motion tracking. With step counting, the framework detects movements that correspond to user motion and uses that information to report the number of steps to your app. Because the system detects the motion, it can continue to gather step data even when your app is not running. Alongside this feature, the framework can also distinguish different types of motion, including different motions reflective of travel by walking, by running, or by automobile. Navigation apps might use that data to change the type of directions they give to users.

AirDrop

Another thing I want to discuss, is AirDrop. I think this is also a big new feature in iOS 7. This makes it possible to share any kind of files with other iPhone / iPad users in a very very easy way. This technique uses a combination of Bluetooth and WiFi to allow to send files between devices without requiring them both to be on the same network or require an internet connection. As a user you can choose whether to accept files from users in your contact list only or from everyone. In my tests it works extremely snappy. Other devices are detected within a few seconds, and when you tap that user, the file is transferred in no time.

All kinds of files can be shared. Practically everything you could share before (images, website URLs, videos), now also have an AirDrop option. Just tap the share icon, and among the options you will see all AirDrop iOS users nearby. Apple provided API’s to support AirDrop in third party apps, but at the moment of writing, not many apps support it yet. I believe this won’t last very long. Soon all apps will support it.

Because AirDrop uses the latest tricks only available in the latest WiFi hardware, only iOS devices released in the last 1,5 year or so support it: iPad Mini, iPad Mini Retina, iPad (4th generation), iPad Air, iPhone 5 and iPhone 5S.

Inter-app audio

And last but not least, iOS 7 supports inter-app audio. This makes it possible for one app to output audio as the input for another app. This was previously already possible using the third party app AudioBus, but now you won’t need that app anymore. This video demonstrates the use of inter-app audio using the (not yet released) JamStik, which is an IndieGogo project. In this video AudioBus is used instead of the iOS 7 inter-app audio feature, but I am showing it to you to get an idea of how awesome inter-app audio can be.

Conclusion

Lots of new stuff is available in iOS 7, with this blog I only scratched the surface with the things I find most interesting. For some of the things we will need to see what the future brings. For example game controllers, inter-app audio and AirDrop are very promising, and all depend on third party developers to make it a success. I have no doubt they will be!

One more thing

One more thing! We at Trifork organize an iOS 7 for Dev’s Course.

Now you have the opportunity to learn mobile development from our expert, Adrian Kosmaczewski, who is an innovator within mobile applications. Our Software Pilot works on the mobile platform every day and you will therefore be able to benefit from his theoretical as well as practical experience in this course. So are you a web or mobile developer eager to learn iOS 7 Development? Our iOS 7 for Dev’s course will teach you the building blocks of this platform.

The purpose of the training is to work intensively with iOS development. You will be taken on a journey from being a developer to being an iOS-developer. At the end of the training you will be able to create a fully-featured sample app based on what is learned.