Apple’s latest mobile OS is out, and if you’re an iOS developer, here is what you need to know. The changes in iOS 9.x are not just skin deep, although the lack of a thorough redesign may lead the casual observer to conclude it’s not a big update. It’s an evolutionary step, there’s nothing revolutionary about iOS 9.x, but it does sport a few new features.
We already covered 3D Touch, which is coming to refreshed 6S-series iPhones, but that’s only one iOS 9.x feature worth mentioning. The new update also brings a lot of tablet-oriented tweaks, which is understandable considering Apple’s decision to launch the oversized iPad Pro with a focus on productivity. Multitasking for iPads is about to get much better, as it will include split view, slide-over and picture-in-picture modes.
Android and Microsoft developers might say their platforms already had such functionality, and they would be right: Apple is late to the party, and iOS has lagged behind Android in multitasking for years.
However, in addition to multitasking and productivity apps, iOS 9.x also boasts a number of features designed with content consumption in mind. Apple has tweaked SceneKit, SpriteKit and Metal, allowing iOS game developers to use some advanced features and make games even more elaborate. Search is getting an update, with better content indexing, history and web markup.
Oh, and let’s not forget 3D Touch, which is Apple marketing talk for Force Touch. I already covered this topic in detail when iOS 9 was announced, and in case you missed it, you need to check it out because I see no point in repeating it and adding fluff to a new post.
So what should we focus on this time?
Multitasking In iOS 9
I guess multitasking would be a good place to start, just to get it out of the way and let Android devs write a few condescending we’ve-had-that-for-years comments without having to scroll through the whole post.
Apple has added three different multitasking modes in iOS9:
- Split view
- Slide over
- Picture-in-picture (PiP)
Split view is a familiar concept. Both apps coexist side by side, in much the same way as Windows 8.x and some Android-based tablets (Samsung). Users can drag apps and set the size of their quasi-window, placing a Skype strip next to the browser, for example.
Slide over is similar to Split View, but it displays the second app in a user-invoked overlay on the right side of the screen, allowing the user to quickly pick an app and interact with it. The apps are displayed in a vertical strip, akin to the app switcher on Android 4.x.
Picture-in-picture, usually used for video, allows users to view an app in a small frame. For example, if you are watching a TV show and get a Skype message, you can reply while keeping the video in a PiP frame.
All three modes can be used at the same time, so you can have a PiP frame while your iPad is displaying two apps in split view.
Apple is urging developers to adopt slide over and split view unless they have a specific reason not to. Camera apps and full device apps, such as games, are listed as exceptions. As for PiP, it is designed for video apps and it’s possible to opt out even if you have a video app, but it’s not necessary to support PiP.
I should also note that each iOS app template in Xcode 7 is now preconfigured to support slide over and split view. There is another caveat: Split view is not supported on most iPads. In fact, it’s only available on the iPad Air 2 and iPad Pro, while slide over is coming to the first-generation Air, along with the iPad Mini 2 and Mini 3.
Another issue that may cause headaches for iOS developers is layout and scaling. All iPads thus far have featured 4:3 displays, so designers are used to working on a 4:3 aspect canvas. Will all legacy apps look right in split view? It depends on a number of factors, so it would be presumptuous to answer at this point. However, it is something to keep in mind if you have a lot of iPad apps under your belt.
Apple has already published necessary information on new multitasking modes, so you should definitely check out the official iOS Developer Library for details.
iOS 9.1 And 9.2 Beta, Market Adoption
Apple released iOS 9.1 roughly a month ago, and the iOS 9.2 beta is already available for download through Apple’s Beta Software Program. Both versions are minor updates.
In fact, iOS 9.1 was the third iOS 9 update, so far. It introduced support for Unicode 7 and 8, along with a range of new emojis (including a unicorn). Xcode has made it to version 7.1 and some Apple TV components were updated as well. Minor camera tweaks were implemented too, such as an update to live photos, which taps sensor information to figure out when the device is lowered to stop recording video.
The iOS 9.2 beta has been available for about a week, and it’s another incremental update. It includes some changes to Safari, adds support for Arabic to Siri, and includes support for AT&T’s NumberSync system. Nothing too significant from a developer perspective.
A few weeks after the iOS 9 rollout started, Apple said the new mobile OS is showing the fastest adoption rate of any iOS version so far. By late September, more than 50 percent of iOS devices were updated to iOS 9. That said, a lot of older devices won’t get the update, but all users with an iPhone or iPad purchased over the last four years should be OK. Users of the good old iPhone 4 and first-generation iPad won’t get iOS 9.
Fast adoption remains an Apple trump card. When Google releases a new version of Android, it usually takes months for its hardware partners to release updates for their devices, and a lot of devices from small brands don’t get updated.
WatchOS 2 Brings A Bevy Of Consumer-ish Improvements
While iOS 9.x can be viewed as an incremental, evolutionary update, WatchOS 2 is hardly a skin-deep update. The new OS allows the Apple Watch to do a lot more, creating new possibilities for developers. However, it’s not a game changer by any stretch of the imagination.
Most changes are consumer-centric, so WatchOS 2 includes a lot of app updates. For example, the watch can now be used to send texts and audio files via Facebook Messenger, iTranslate will allow users to quickly translate speech, while the new Airstrip app is a healthcare tool. Siri support has been expanded as well, along with a new Time Travel feature that allows users to check weather and appointments. The music interface has been redesigned. Users can now reply to emails with voice dictation, and when it’s time to go to bed, the watch can be placed in Nightstand Mode.
The Apple Watch now connects to WiFi networks without an iPhone; it doesn’t need a tether. Google already implemented this feature in Android Wear a few months ago, so it’s hardly surprising that Apple is adding it as well.
Apple also tweaked the aesthetics with a range of new watch faces (and redesigned ones), additional Complications and new ways of customizing and organizing them. New display settings that will keep the screen live longer, up to 70 seconds.
To be frank, I don’t find most of these updates very exciting, and a few of them could be described as downright gimmicky.
WatchOS 2 For Developers
While the update won’t bring a lot of novel features to consumers, it will open up new possibilities for developers. The big news is that WatchOS 2 allows access to more sensors and other hardware components.
Developers will now be able to use the Digital Crown for a lot more than zoom; the crown can be used to scroll through content, notifications and so on. The problem is that very few apps will take advantage of these new crown features; it will take a while before they are updated to support them. On the other hand, the whole point of allowing deeper access to various components is to compel developers to create native apps for the Apple Watch.
In addition to new digital crown controls, third party apps can also access the microphone and accelerometer.
So what about complications? From a developer perspective the ability to create, manage and customize new complications may be one of the biggest updates. The new ClockKit framework
ClockKit.framework is employed to manage complications associated with Apple Watch apps. The framework allows developers to use various data sources for Complications, and then to tweak the visual appearance to ensure a good match with the app. Everything is done using different
ClockKit.framework classes, and you can check out the official Apple ClockKit framework reference for additional details.
These changes might not sound like a big deal, but in the long run they may change the way users interact with their Watch OS devices. They can also create new use cases and motivate more developers to create native apps for the platform.
New WatchOS Architecture
The changes in WatchOS 2 aren’t skin-deep. Apple has reworked the WatchOS architecture, but the good news is that the changes shouldn’t create a lot of problems for developers.
In the first incarnation of WatchOS, the WatchKit extension ran on the user’s iPhone, but in WatchOS 2 it runs on the Apple Watch. Apple says moving the extension to the watch makes communication between the Watch app and extension “much faster,” and allows the app to work when the user’s iPhone is unavailable. Remember that untethered WiFi access I mentioned earlier? Well, this is one of the things that makes it possible. It is also important for expanded complications functionality.
The fact that the WatchKit extension was moved to the Apple Watch does not affect its functionality. Apple notes that the “division of labor” between the Watch app and WatchKit extension remains unchanged in WatchOS 2.
The app still contains the storyboards that define the screens the app uses to present information, while the WatchKit extension uses
WKInterfaceController subclasses to manage said screens. All interactions are still handled by the WatchKit framework.
Apple points out that, most of the time, existing WatchKit extension code should work in WatchOS 2. However, the decision to move WatchKit extensions to the watch will change the way apps are designed. Extensions will be implemented using WatchOS SDK frameworks instead of iOS SDK. However, for features not supported in WatchOS frameworks, developers will still have to rely on the iOS app. This also means that data is usually stored on the Apple watch, but in case the app needs some data from the companion app on an iOS device, it will fetch it wirelessly and transfer it to the Apple Watch. Developers will not be able to use a shared group container to exchange files with the iOS app.
Migration To WatchOS 2
It’s also worth noting that developers don’t have to migrate to WatchOS 2 yet, although Apple points out many features won’t be available if developers decide it’s not worth the trouble. Some architectural changes, outlined above, might be necessary, but the work may pay off in certain scenarios.
Apple points out three basic questions that developers need to ask before they decide whether migrating an existing app to WatchOS 2 is worth the trouble.
- Does the developer need to support earlier Apple Watch versions?
- Does the app rely heavily on iCloud technologies?
- Does the watch app rely on data from the companion iOS app?
It is possible to deliver an Apple Watch app in two versions, for WatchOS 1 and WatchOS 2, using the same iOS app bundle. As a result of architectural changes, the WatchOS 2 app must be recompiled into a separate executable. Apple notes that sharing code may necessitate more effort and introduce more complexity than having two entirely separate apps.
Since WatchKit extension in WatchOS 2 runs on the Apple Watch, it no longer has direct access to iCloud technologies. All iCloud-related operations have to be performed by the iOS companion app. Data is then sent to the WatchKit extension wirelessly, so developers will probably have to change the way they manage and sync data between the two devices.
Due to the new architecture, communication with the iOS companion app was changed as well. In case the app needs data from the iOS app, developers must explicitly transfer the necessary files from the iOS device to the WatchOS device. Data has to be managed locally in both locations and developers need to keep in mind that data on the Apple Watch is not backed up automatically. It has to be sent back to the iOS device in order to be backed up.
We covered iOS 9 in a couple of posts, so this time around I decided to focus on new multitasking capabilities and betas. I find the multitasking aspect interesting due to Apple’s decision to launch the iPad Pro, which is getting some great reviews.
Unlike the iPad and iPad mini, the Pro version is more ambitious. It’s designed for content consumption and content creation while the good old 9.7-inch and 7.9-inch iPads are mainly used for content consumption. Improved multitasking is vital to a product with “professional” aspirations. You don’t need great multitasking support while browsing IMDB or playing the occasional game, but if you need to edit a few documents, tweak some sketches and Skype at the same time, top-notch multitasking support is a must.
With the iPad Pro, Apple is looking to carve out a new niche for iOS. The operating system is mature enough to be used for business, and with the new ARM-based A9X processor, Apple has a powerful hardware platform to go along with it. Of course, Apple is not alone in this space, and it can be argued that the iPad Pro was “inspired” by Microsoft’s Surface Pro tablet. Apple decided to use its mobile OS for the iPad Pro, leaving OS X reserved for MacBooks. Microsoft ditched Windows RT (Windows for ARM) and moved away from ARM processors.
However, Intel’s latest 14nm Core M and Cherry Trail processors are extremely power efficient and I’ve had a chance to try them out in a few entry-level to mid-range Windows systems ($150 to $500). All I can say is: Do not underestimate them. The new Intel hardware is excellent, Windows 10 is a mixed bag (at least, in my opinion), but pricing will be extremely competitive.
As for WatchOS 2, it’s a somewhat bigger update compared to iOS 9.x. However, I am surprised by Apple’s decision to redesign the basic architecture behind it so early in the game. The Apple Watch was in the works for quite some time, and it was beaten to market by Android Wear watches by several quarters.
Actually, I did not expect architectural changes in the second iteration of Apple’s wearable OS. Maybe I have unrealistic expectations, but when a $600 billion tech giant rolls out a product months after its rivals, I don’t expect it to go back to the drawing board a few months later. Untethered WiFi, WatchKit extension running on Apple Watch? They could have, and should have, been included in WatchOS 1.
Perhaps this is why a lot of third-party apps didn’t perform well when the Apple Watch launched.