This post provides a high-level overview of the new API's developers use to build apps for IOS8. There's a lot more to explore than can be covered here, so if you have questions about IOS8 development go talk to your favourite developer
. Below is a list of the major new API's that have been introduced & how you can use them in your apps.
CoreAuthentication & LocalAuthentication
This is the one feature I'm more excited about than even the upcoming iWatch: Apple now allows third-party developers not only to authenticate users against iCloud, but even gives fingerprint-based authentication on devices that support it. How cool is that? Password-management is a huge hassle for the vast majority of people & this is a step in the right direction. Not perfectly secure, but it's better than what people are doing now.
Apple is also respecting user's privacy here: no biometrics data is sent to the servers & by default 3rd-party developers get NO personally identifying information about the users, e.g. if they want access to a user's email address they have to explicitly ask permission.
HealthKit allows 3rd-party developers access to data managed by Apple Health, i.e. sex, weight, height, stepcount, blood sugar levels, etc ... HealthKit will be supported by third-party sensors like FitBit & WiThings. This framework still seems to be very much in flux: Apple only recently added support for their own M7 motion chip.
How will this affect you? If you work in the biomedical/fitness sphere you obviously need to look at this pronto, but even "normal" apps could use some of it's features to e.g. pre-fill form fields in an application (think sex, age, ...).
Similar in approach to HealthKit, HomeKit allows 3rd-party developers access to a user's smart home accessories. Think thermostats, door locks, smart lighting, etc ... Just like HealthKit the success of this framework very much depends on 3rd-party manufacturers' adoption of the HomeKit standard. The basics of HomeKit are defined in Apple's (Proprietary) Home Automation Protocol: it allows you to discover, communicate & manage supported accessories.
NotificationCenter & NotificationsUI
Apple (finally) allows third-party developers to put widgets on the user's lock screen in the notification center. A longtime staple of Android and Windows Phone, widget functionality comes to IOS. Apple calls them extensions.
Apple is still taking a cautious approach here: only a few types of widgets/extensions are allowed, extensions need to be "packaged" inside and existing app for AppStore distribution & resource allocation is aggressively enforced by the operating system: hogging resources will get your extension killed even faster than a normal app. Apple clearly puts user experience, stability & battery life above developers' desires.
Photos & PhotosUI
Apple is opening the kimono big time in the built-in Photos app. The Photos Framework exposes all kinds of new details about the pictures being taken by the user, but always keeps the user's privacy in mind. E.g. apps must now explicitly ask for permission to use the camera.
Apple's Photos (Camera) app now allows third-party developers to edit photos taken by the user, making e.g. third-party photo filters a reality. The PhotosUI Framework is probably the easiest way to get started with 3rd-party photo editing.
CloudKit is Apple's response to PaaS offerings like Parse.com, Google's AppEngine & even some parts of Amazon's AWS cloud service. Apple wants to make it easier than ever to build mobile apps without having to worry about building a costly backend & maintaining servers. Apple is effectively opening up the tools they have been using internally to power their iCloud based services like PhotoStream & iCloud File Storage. Be wary though: among developers iCloud has received a bit of a bad rep because, well, previous iterations of this service simply sucked.
How will this affect you? Potentially big time: building a backend is (still) a fairly large & costly part of app development. Apple now offers nearly all parts at a really competitive price, potentially seducing a lot of developers to entrench themselves deeper in the Apple ecosystem. Caveats: no the Android version of your app won't be able to use this & no you won't be able to run server-side processing tasks such as video encoding.
CloudKit offers: authentication against iCloud user accounts, asset storage (e.g. images), database storage & search, push notifications. Please not that CloudKit is currently still very much a work-in-progress: don't expect your data to remain stable before the official launch later this year. Be cautious ... Apple has a bad rep when it comes to cloud solutions. At this point in time CloudKit is Apple's promise to make up to the clusterfuck that was iCloud & Mobile.me. Trust, but verify.
Push Notifications are a core design pattern to iCloud. With PushKit Apple allows far more fine-grained control over exactly when your messages will be delivered to the user. Each time your iPhone receives a push notification it incurs a small energy cost: the device has to wake up & process the message. In today's mobile world battery life is *everything* & new functionality in PushKit allows your app to be more energy-efficient. How will this impact you? Push Notifications are an integral part of Apple's backend (CloudKit) strategy: correct use of PushKit will allow your app to appear responsive even under bad networking conditions without draining the user's battery.
In earlier releases of IOS Apple added support for 2D-based gaming with SpriteKit. Apple now adds support for 3D gaming with the SceneKit 3D engine. The approach is similar to SpriteKit: it's a great way to build simple 3D games with support for basic physics and rendering, but for the heavy lifting game studios will continue developing their own 3D engines. How will this impact you? Developing for SceneKit is fairly easy so incorporating 3D previews of e.g. products in a shopping app may become feasible.
Apple added a new way to embed web content into native apps. Previously this was done with the notoriously slow & buggy UIWebView class. How will this impact you? If you're thinking about developing a so-called hybrid
web-based app which runs on both Android and iPhone you will appreciate the performance improvement the new WKWebView brings.
Got questions? Contact me
or leave a message in the comments.