Since the release of iOS 7 the media has been quick to cover all of the consumer facing features like flat design and new navigation. As a mobile developer I’ve been thinking about these features since I attended WWDC and now post-release. iOS 7 SDK changes are more than just skin deep. The many, less-discussed API improvements and additions will help your app stand out.
There has been a lot of talk about the new look of iOS 7, which Apple describes as a focus on “Clarity, Depth, and Deference [to user content],” but there are many other features added or improved in the SDK Apple gives developers to create apps for the App Store. I’d like to elaborate on a few of the changes here, now that the details are no longer covered by an NDA, as some of them haven’t gotten much attention but are just as exciting as the new UI polish.
iBeacons: iBeacons are inexpensive, small Bluetooth LE devices (slightly larger than a coin cell battery), which can be hidden throughout a location and detected by an app, with approximate distance values — kinda like GPS for indoor locations. There are many potential applications — Apple was fond of describing stores as a use case at WWDC in June (e.g. welcome the customer to the store at the front door, pull up their loyalty card at the cashier, etc.), as well as art galleries and zoos (walk up to a painting/animal and a description/photos/etc. pop up automatically). I think we’ll see some really cool applications here, for instance the rumored implementation at ballparks by MLB: http://www.macrumors.com/2013/09/27/apple-and-mlb-collaborating-on-ibeacon-infused-app-for-customized-stadium-experiences/
Text Kit: While apps on iOS were always able to create complex text layouts, many of the built-in views made it complicated to do, requiring more time, code, and complexity that it should have. With Text Kit, an iOS 7 addition, Apple has finally given us classes for managing fine typography. Apple describes the new framework well: “Text Kit can lay out styled text into paragraphs, columns, and pages; it easily flows text around arbitrary regions such as graphics; and it manages multiple fonts. Text Kit is integrated with all UIKit text-based controls to enable apps to create, edit, display, and store text more easily—and with less code than was previously possible in iOS.” Apple focused on typography for iOS 7, and they’ve given us the support to do the same in our apps.
M7 motion coprocessor: The M7 motion coprocessor that is new in the iPhone 5S enables the collection of more accurate motion data for apps, as well as support for step counting in a battery-efficient way (even when your app is not running), and the ability to distinguish between different types of motion, for instance walking, running, or driving. This new chip should enable apps that give fitness wearables (like the Fitbit and FuelBand) a run for their money, but it can also be used in apps not related to health tracking, such as a navigation app that can change its directions based on the mode of transportation (the user has gotten out of their car — time to switch to walking directions).
New Background Modes for Fetching Data: Apps that regularly update their content from a server can register with the system to be launched periodically in order to keep content up-to-date. iOS attempts to intelligently schedule this to minimize battery drain by watching the user’s behaviors and giving the app background time before it would normally be launched by the user (think updating a weather app every morning before the user gets up). Another background data fetching API added is “silent push notifications”. These enable a server to send a push notification to a user’s device when there is new content. The push notification would not actually appear to the user, instead acting as a trigger to give the app some background time to fetch new data from the server. These new APIs will allow content-based apps to always appear fresh.
Improved View Transition Animation Support: Apple has added APIs to allow for better animated transitions between views — in a more supported/easier manner than previously available. At WWDC for example, Apple demoed some fun fold transitions in a mapping app. I’m excited to see what people come up with (though overuse of this could also be annoying).
Peer-to-Peer Connectivity: Apple added a new framework that supports “the discovery of nearby devices and the direct communication with those devices without requiring Internet connectivity… With this framework, your app can communicate with nearby devices and seamlessly exchange data.” Additionally, Apple provides a view for discovering nearby devices. The opens up the possibility for devices to communicate faster than they could have over bluetooth, without the requirement of joining the same WiFi network (also helpful when there isn’t a WiFi network around to join, but you want to share data).
Improved Camera APIs: Apple’s camera APIs had the ability to detect faces in previous versions of iOS, but with iOS 7 Apple has added the ability to detect if the faces in the picture are smiling or if the subjects have their eyes closed. Apple has also added many other minor camera improvements, such as improved video recording, image stabilization, and smooth autofocus.
Dynamic behaviors for views (UIKit Dynamics): You know that parallax effect on the home screen when you rock your device from side to side on iOS 7? Apple has given developers APIs so that we can easily implement the same effects, and others, including gravity, collision, push, snap, and attachment (e.g. spring) behaviors. This provides a way to mimic the real world with the views in your app. Want to have views fall in and bounce? Easy.
Sprite Kit: Sprite Kit is a new framework that provides a hardware-accelerated animation system optimized for creating 2D and 2.5D games, including a graphics rendering and animation system, sound playback support, and a physics simulation engine. While there are some good third party libraries for this, it’s great to have something provided by Apple, reducing setup time and complexity.
Inter-App Audio: Apple has added the ability for apps to send MIDI commands and stream audio between apps on the same device. This will enable a new category of apps that previously couldn’t exist — for instance a mixing app processing the output of a musical instrument app.
Game controllers: There are a few existing game controllers out there for iOS, but each has its own library that game developers have to integrate, and they never really took off. With iOS 7, Apple has added a framework and has partnered with hardware companies to create Made-for-iPhone/iPod/iPad (MFi) game controller hardware. With a standard, Apple-provided API, I expect to see many games in the app store support game controllers. It seems like every gaming Nerd I talk to is excited about this. The game controllers aren’t out yet — expect to hear more about this at the rumored October iPad event.
Barcode/QR code scanning: Barcode scanning is now included by Apple in the SDK. There were a few good non-Apple libraries to enable support for this, but it’s nice to have it built in.
Text to Speech: Text to speech is now built-in. Want your app to talk to your users? You no longer need to use a third-party library, saving on cost and complexity.
These new features and improvements will enable the creation of apps that are better than ever, and in some cases allow for new apps that were technically infeasible before iOS 7. My fellow Nerds and I can’t wait to work with these new features (in fact we’ve already started playing with iBeacons), and are excited integrate these new APIs into your app.