WWDC 2017 Viewing Guide

Another year, another WWDC and yet more session videos to catch up on. Here is my guide to the sessions I found most interesting this year.

Machine Learning, Drag and Drop and Xcode 9

The platform state of the union is always a good place to start:

Don't Overlook These

A couple of personal favourites that you might overlook but that are well worth your time:

App Frameworks

Lots of good sessions here. I have not even included watchOS, tvOS or macOS sessions. Here are my highlights:

  • Session 201 What's New in Cocoa Touch The return of WWDC all star team Eliza Block and Josh Shaffer with a summary of what has changed in Cocoa Touch.

  • Session 204 Updating Your App for iOS 11 Covers the new large title Navigation bar behaviour with integrated search bar, refresh control and Auto Layout support. New layout margin guide settings for the root view of a view controller (you can now change the system minimums) and safe area guides replacing the top and bottom layout guides. View controllers also no longer mess with the contentInset of scroll views. Table view cells are now self-sizing by default and you can more easily add swipe actions.

  • Session 206 Introducing Password AutoFill for Apps Looks pretty easy to implement if you have an app logging into a web service and your users store their credentials in the iOS keychain.

  • Session 210 What's New in Core Data The big Core Data news this year is support for Core Spotlight integration and Persistent History Tracking. The latter targets the issue where you have multiple contexts and extensions updating a persistent store. An app returning to the foreground can fetch just the changes instead of being forced to reload everything.

  • Session 214 What's New in SiriKit Maybe not the dramatic changes being predicted but we did get new intents for lists and notes and showing visual (QR) codes is coming soon.

  • Session 219 Modern User Interaction on iOS Apple may not be encouraging it but you can now intercept the system swipes at the edges of the screen before they trigger the control center, notifications or slide over actions.

  • Session 225 What's New in Safari View Controller Customize the bar and tint color to better match your app. Built-in support for drag and drop. Each app now gets its own cookie jar separate from the Safari browser. Change the done button to cancel or close, exclude activities from the share sheet.

  • Session 230 Advanced Animations with UIKit Good recap on using property animators and a nice tip that the CALayer cornerRadius property is now animatable.

  • Session 235 Building Visually Rich User Experiences A good follow on to session 230 with some Core Animation tips and tricks.

  • Session 237 What's New in MapKit New map type that makes your data stand out on the map. A new MKMarkerAnnotationView allows annotations to be clustered when they overlap.

  • Session 241 Introducing PDFKit on the iOS Building on the CoreGraphics PDF features but with modern Swift and Objective-C API's to make it easy to view and annotate PDF documents.

  • Session 242 The Keys to a Better Text Input Experience Recap of the various ways you should be handling the keyboard changing height and adding custom input views. How to make your app remember which keyboard the user selected. iOS automatically converts to smart quotes and dashes.

  • Session 245 Building Apps with Dynamic Type Apple continues to push hard for developers to support dynamic type. A big change in iOS 11 is that all styles now grow with the extra large accessibility sizes (in the past only the body style did). Apple has also made it easier to support with custom fonts using UIFontMetrics. A PDF vector asset in the asset catalog can now be set to preserve vector data.

Drag and Drop

The big UIKit enhancement this year is support for drag and drop both within and between apps.

The following sessions dig deeper when you have time:

Natural Language Processing (NLP), Machine Learning (ML) and Augmented Reality (AR)

The other big theme this year is the push by Apple to make it easy for us to use NLP, ML and AR in our apps. Apple also highlights the privacy, speed and low latency benefits from being able to do this on device without the need for cloud based services.

Swift

With the Swift evolution process happening in the open we don't need to wait for WWDC to find out what is new in Swift 4. Still good to get a recap:

Development Tools

Xcode 9 is looking like a great update with refactoring support for Swift getting the biggest cheer.

Design and Accessibility

Great to see Apple continue to improve and put emphasis on the need to design and make apps for everybody.

  • Session 110 Convenience for You is Independence for me Inspiring talk from Todd Stabelfeldt (aka the Quadfather), quadriplegic since he was 8, on the difference designing your apps with accessibility makes. If you have any doubts on the benefit of making your apps accessible watch the demonstration of him using a switch control with his head (and sometimes his tongue).

  • Session 215 What's New in Accessibility Some big improvements to general accessibility capabilities for users in iOS 11. You can now interact with Siri using text. The whole system has been audited to support dynamic type which now uses the super large accessibility sizes for all styles (test your UI with these!). VoiceOver can now detect and speak text embedded in an image and there is improved support for container types. Finally if you are adding support for drag and drop don't forget to make it accessible.

  • Session 803 Designing Sound Highly entertaining talk on using sound including how some of the familiar Apple system sounds are created.

  • Session 806 Design for Everyone Lots of practical design tips to make your app accessible.

Security and Networking

App Store

If you use In App Purchase pay attention to the changes coming to the App Store. I would recommend the following two sessions:

Media

Highlights are MusicKit to get access to the Apple Music API and changes to the Photos API. The image picker is moved out of process so the user can select an image without the app having to ask for permission.