Apple recently announced iOS 8, the next version of their mobile operating system. This is one of the most significant updates in the history of iOS from a developer perspective, since it integrates a huge number of both APIs and SDKs that see to consolidate how developers interact with things such as health information, smart devices in users’ homes, cameras, and other applications. Android developers will notice that there seem to be a lot of features that were borrowed from Android, that have not been present in previous iterations of iOS (custom keyboards and widgets being the most noticeable). According to Apple themselves, here is a summary of iOS 8: “Apple® today released its iOS 8 SDK, the biggest developer release ever with more than 4,000 new APIs, giving developers the ability to create amazing new apps like never before. iOS 8 allows developers to further customize the user experience with major extensibility features like Notification Center widgets and third-party keyboards; and introduces robust frameworks such as HealthKit and HomeKit. iOS 8 also includes Metal, a new graphics technology that maximizes the performance of the A7 chip and Swift, a powerful new programming language.” The following is a breakdown (organized the same way Apple organizes their iOS 8 page) of what these updates mean, both for us as developers and for our clients with apps:
A new concept in iOS 8, app extensions are plugins that allow an application to modify the appearance and functionality (within apps) of core OS functionality that used to be off limits. This includes implementing custom keyboards, storage that allows apps to share files, sharing interfaces, document browsers, action sheet UI elements, and widgets that run on the today page. All of this functionality has been clamored for by developers for a very long time, and Apple seems to have essentially taken the most requested features from Android that were missing in iOS and allowed developers to make plugins that replicate them. Initially, a lot of the focus has been on custom keyboards and widgets (which are the most obviously lifted features from Android, as noted above). However, what will likely prove most significant will be the document browsers and file sharing storage providers, since that enables a more traditional way of handling files that iOS has previously specifically avoided.
Apple has added more native API’s than in any previous iteration of iOS, and the potential for some of the most important ones is very significant:
PhotoKit: This brings in native photo editing functionality for developers. Previously, photo editing had to be done either through third party libraries like ImageMagick, img.ly, or or using low level native routines that often involved writing code in C and using toll-free bridging to move the image resources from Objective-C NS classes into things that could be worked with in C. PhotoKit looks to remedy this by implementing native photo editing controls that are memory efficient and thread-safe, which should result in many more powerful and less-buddy photo editing solutions.
Manual Camera Controls: In previous versions of iOS, the app would essentially hand off control to the OS when capturing images, since the amount of control that the app had beyond which camera to use and what level of zoom to apply was very limited. The manual camera controls allow the developer to control every aspect of how the camera works, which should lead to some interesting applications when combined with PhotoKit. More importantly, though, it will drastically improve augmented reality solutions since the developer will be able to select settings that are optimal for the type of object recognition being performed without having to do computationally expensive post-processing.
HealthKit: This has the potential to be revolutionary, since it facilitates the sharing of health data (with permissions controlled by the user) between applications. The initial implementations of this will probably focus on fitness applications, but with companies like Epic potentially building EMR applications on HealthKit, Apple is trying to position their OS as the leader for handling trusted health care data management on the mobile front. It will remain to be seen how this works with HIPAA down the line, but it is excellent as Apple’s first entry into a space in which a lot of companies, like Branch2, are currently trying to innovate.
HomeKit: This will allow hardware developers to build devices that tie into HomeKit, and allow software developers to give users the ability to control them. It is designed with the idea of making iOS the command center for a smart home, and will most certainly have tight integration with future releases of the Apple TV OS. Early applications will likely be light and sound peripherals, but being able to open and close garage doors, manage locks, monitor appliance status, and control thermostats will be coming. This is another capability that appears to be built in reaction to Google’s recent work in this space, which has been taking off after Google’s acquisition of Nest. Apple wants to make sure that iOS has native functionality that will allow it to be a competitive player in both the home automation and the “internet of things” spaces.
CloudKit: CloudKit provides native access and free cloud storage for app developers, encouraging developers to utilize it as a native cloud storage provider instead of Google Cloud or AWS’s S3. In Apple’s words, “with CloudKit, you can focus on your client-side app development and let iCloud eliminate the need to write server-side application logic. CloudKit provides authentication, private and public databases, and structured and asset storage services — all for free with very high limits.”
Handoff: This allows a user to seamlessly move from one device to another and pick up where they left off within an app. As Apple describes, “Handoff enables the user to switch from one device to another and continue an ongoing activity seamlessly, without needing to reconfigure each device independently. For example, if a user is browsing a long article in Safari on a Mac, he or she can move to a nearby iOS device that’s signed in to iCloud using the same Apple ID and choose to have the same webpage automatically opened in Safari on iOS, with the same scroll position as on the original device.” One cool aspect of Handoff is that its functionality is automatically integrated into many apps out of the box, and adding support for new apps seems very straightforward: “A number of Apple apps, including Keynote, Safari, Mail, Maps, Contacts, Notes, and Reminders implement Handoff for iOS 8 and OS X v10.10 using new, public APIs. Third-party developers can use the same APIs to implement Handoff in apps sharing the same developer’s Team ID. Such apps must either be distributed through the App Store or signed by the registered developer. Document-based apps (those based on a subclass of
UIDocument) have built-in implementations of Handoff.”
According to Apple, “technology improvements in iOS 8 make it easier than ever to implement your game’s graphics and audio features. Take advantage of high-level frameworks for ease-of-development, or use new low-level enhancements to harness the power of the GPU.” The major advancements in iOS 8 for gaming focus on making games’ use of hardware and battery resources more efficient, thus giving game developers the ability to squeeze more performance out of the devices on which their games run. The most significant non-performance-related addition in iOS 8 is SceneKit, which provides an intuitive 3D SDK that sits on top of more low-level libraries like OpenGL and does a lot of work for developers, since it contains built in physics and particle engines: “SceneKit is a high-level 3D graphics framework that helps you create 3D animated scenes and effects in your apps. It incorporates a physics engine, a particle generator, and easy ways to script the actions of 3D objects so you can describe your scene in terms of its content — geometry, materials, lights, and cameras — then animate it by describing changes to those objects. SceneKit’s 3D physics engine enlivens your app or game by simulating gravity, forces, rigid body collisions, and joints. It’s also completely integrated with SpriteKit, so you can include SpriteKit assets in 3D games.”