One major trend from WWDC that highlights this is the rise of semantic apps, or “proactive suggestions” as Apple calls it, to present your content in search results or in auto suggestions for chat messages. Through extensions and “CoreSpotlight” it was already possible to index your app’s content by the system so it could be presented to the user in multiple ways. The new SiriKit extends this concept to voice input and `NSUserActivity` objects allow contextual input in chats, maps and other apps. In this first version SiriKit is limited to a handful of domains such as “Messaging”, “Ride Booking” or “Workout” but future versions will definitely expand this.
Like websites did in previous years, apps now announce their content to the system via extensions, which decides if/what is presented to the user. Together with universal links which were introduced in iOS 9, apps are no longer single instances on the dashboard and more like web pages cross-referenced throughout the system and from external web resources.
For older devs this feels like a revival of the Dublin Core and Microformat for web content and in fact Schema.org is now the official source of structured data markup for web and app content. Although apps will not be parsable from the outside, this could be seen as SEO for the iOS system itself.
Xcode was not left out either, benefiting from some great improvements for debugging (autolayout) and profiling support for extensions. Like other new features Apple starts slowly. Third parties can currently extend only the source view and the text input- hence their name `Source Extensions` - but not global functionality or the Xcode UI. Even this ‘limited’ access to the system could allow advanced features like dead code detection which we know from other IDEs. Like other features, we can expect more access to the system in future versions.
Russ Bishop has a great look at the details of these extensions.
The keynote and “state of the union” also introduced a new notification system unifying local and remote messages. The ability to handle a notification, load external content such as images and present the aggregated view is not new to Android users and it's good to see this coming to iOS 10.
Prefetching external resources in the background is also a big win for watchOS users. Watch app users will hopefully see more content and less loading spinners. Even with the same hardware Apple watch apps start and feel much faster during usage.
Over the week I sat in a lot of sessions that were not covered by big media, but are important steps to evolve the platform into a “Swifter” future.
Collection and Table views for instance got new APIs to prefetch content which simplifies asynchronous loading of external data. This increases the overall performance of collection views and reduces the amount of code to handle large data sets that are not precached in local storage.
CoreData got a big bump that simplifies the general setup and maintenance of `NSManagedObject` entities - a Swift version of mogenerator right in Xcode. Also many other shortcuts and the massive usage of default values will simplify Core Data code during setup and handling.
Much has been written about Swift 3 and all I'd like to say is that I like the transition from arbitrary NSString parameters to defined configuration objects and enums in many places all over the system. This means new developers will hopefully find a simpler introduction to iOS than previous generations.
So, was everything cool and shiny? While we saw a lot more “evolution” and less “revolution”, this feels ok for the tenth iteration of a mobile operating system. With Apple's release of search ads similar to Google and the improved app semantics described above, it feels like apps are currently making the same transition to semantic and massively linked entities as the web did in the early 2000s.
Personally I hope WWDC 2017 will bring offline maps and routing, such as those in Google Maps. Of course WWDC 2016 has already given us plenty of valuable new features and upgrades to recommend to our clients in 2016!