This year’s WWDC was full of surprises for developers. Apple chose the path of opening so many aspects of iOS to developers, which is something that we could not even think of some years ago. Users download more and more apps and spend more and more time on their smartphones. Apple aims to help this by eliminating the number of times users have to open apps and find what they want.
First and most visible change is the revamped lock screen. iPhone 6S and 6S Plus have so fast fingerprint sensors, that it became almost impossible to read notifications in the lock screen by pressing the home button before the screen unlocks. The only way to read notifications on a 6S on the lock screen is to use the sleep/wake button instead. In iOS 10, lock screen lights up when you raise your iPhone and notifications are presented in a much cleaner way and without dimming the background. Notifications are rich and even the widgets are right there in the lock screen. From a developer’s perspective, notifications now support rich user interfaces like seen in the image below. This means that for a third time in a row we have to change the way we register for notifications and how we handle them but this time for good. Notifications now support images too (something that was only available for bundled apps till now, for example the Messages.app) and all the APIs you would expect are there (for fetching images before triggering the notification for adding actions, etc).
Next big feature in the SDK is SiriKit. Apple is finally making Siri available to iOS developers (Siri got its way to macOS too but without a SDK for developers). Watching the WWDC sessions on SiriKit, it seems pretty straightforward to implement and the final implementation is just what the user’s expect when they interact with Siri and the built-in apps. There are APIs for registering vocabulary (localized), creating your intent UI, handle user’s input and even mark user’s input as details missing, so Siri can ask for more information. Creating a UI for Siri has some restrictions: UI cannot be interactive, for example you cannot add a map that users pinch or pan. Something that was not mentioned during the keynote is that that intent UI can be used also in the new Map extensions, which means that if you developer for Siri, you get the map extension for free.
Map extensions is the next big thing in this year’s WWDC. Apple has opened up the full power of MapKit to developers. If your app is a ride booking app or a table reservation app you can now fully integrate it with the Maps.app and let your users book a ride or table right from there. Note that this is not a deep link to your application, it is like your app running within the maps with full UI and user actions.
Next in the list are Messages and iMessage. In a few words Apple turned iMessages to a real equivalent of Facebook Messenger. Emojis are everywhere, links load directly within messages and a bunch of other cheesy effects are there. Apple got it one step further and Messages now let you replace all the suitable words within a message with their corresponding emoji. Developers can now create apps for iMessage. There can be two kind of apps for iMessage. Sticker apps that require no code from the developer, you just have to create a sticker app in Xcode 8, drag your images in the appropriate asset catalog, build, archive and submit, and apps that add functionality to messages which can range from games to collaborative apps.
Developer tools got also a lot of attention this years. I’ve been playing with Xcode 8 beta 1 since the day it came out, and I can definitely say that is much faster and smoother than Xcode 7, especially if you mix and match Swift and Objective-C code in your project. Indexing does not take a year to end and .xibs and large storyboards load much faster.
Swift 3 comes with a ton of changes that are source breaking. Xcode provides a migration assistant but it gets some time to get used to the new syntax and naming. Xcode 8 bundles also Swift 2.3 so you can build against the latest SDK and use all of the cool features of iOS 10, watchOS 3 and tvOS and move to Swift 3.0 when you are ready. A nice article on the source code changes in Swift 3.0 can be found here.
Small things that did not get much attention during WWDC are the new NSGridView on macOS which is like an enhanced StackView component and that Apple in iOS 10 marked all the iCloud core data sync methods as deprecated. Textfields also got smarter and now the predictive keyboard can also suggest all kind of data beside words, like addresses, phone numbers, emojis and urls. Last but not least code signing got much easier in Xcode 8 and this time it seems to work as advertised. Actually you do not even have to mess with certificates and provisioning if you do not want to. Xcode manages all the code signing process as expected.