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:
- Platforms State of the Union If you did not watch it yet start here for an overview of the changes across iOS, macOS, tvOS and watchOS.
Don't Overlook These
A couple of personal favourites that you might overlook but that are well worth your time:
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.
- Session 203 Introducing Drag and Drop If you are supporting the iPad watch this for the basics of adding support.
- Session 223 Drag and Drop with Collection and Table View Extra API for adding drag and drop to table and collection views.
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.
- Sesion 208 Natural Language Processing and Your Apps Use a combination of Linguistics and Machine Learning to process text. Identify the language of text, tokenize and identify parts of speech and tag names, locations. Find out what “lemmatization” is and why you might want to use it when searching text.
- Session 703 Introducing Core ML Fascinating introduction into how and what you can do with Machine Learning. Take a look.
- Session 710 Core ML in depth When you are ready to dig deeper.
- Session 506 Vision Framework: Building on Core ML Face detection, Image registration (alignment), Rectangle detection, Barcode detection, Text detection, Object Tracking
- Session 602 Introducing ARKit: Augmented reality for iOS look at that chameleon…
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:
- Session 402 What's New in Swift Great shout-out to Ole Begemann's Swift 4 playground and Swift 3.2 to 4 migration.
- Session 212 What's New in Foundation The big news this year is around the new keyPath/Key Value Observing features and the Codable protocol for JSON encoding and decoding.
Xcode 9 is looking like a great update with refactoring support for Swift getting the biggest cheer.
- Session 401 Localizing with Xcode 9 New pseudo languages, import/export Stringsdict files for handling plurals, test scheme can now specify language and region and you can attach localized screenshots to test runs.
- Session 403 What's New in Signing for Xcode and Xcode Server The big news for me was that Xcode server no longer needs you to install macOS server to use it.
- Session 404 Debugging with Xcode 9 Wireless development and view controllers now included in the view debugger. An inception-like demo of Xcode debugging Xcode debugging Xcode debugging an app…
- Session 405 GitHub and the New Source Control Workflows in Xcode 9 Add your GitHub account (it supports 2FA) and clone away.
- Session 406 Finding Bugs Using Xcode Runtime Tools New Undefined Behavior and Main Thread Checkers.
- Session 409 What's New in Testing Big improvements to async testing, performance, grouping tests into activities and screenshots.
- Session 414 Engineering for Testability Good tips on how to refactor for testability.
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
- Session 701 Your Apps and Evolving Network Security Standards Best practises, opt-in to test TLS v1.3 and use App Transport Security
- Session 702 Privacy and Your Apps Safari Intelligent Tracking Protection. DeviceCheck - store 2-bits of persistent data on a device that survives app uninstall or even full reset.
- Session 707 Advances in Networking, Part 1 Apple has been experimenting with Explicit Congestion Notification since iOS 10.3 and will fully adopt in iOS 11. The transport layer is moving into user space which should boost performance. Multi-path TCP (WiFi+Cellular) support (easy with URLSession).
- Session 709 Advances in Networking, Part 2 URLSession can now wait for a connection - no need for reachability testing! Can schedule URLSessionTask (earliestBeginDate). Progress reporting with UIProgressView.
- Session 708 Best Practises and What's New in User Notifications Can now customize how notification content is displayed when hidden on the lock screen.
- Session 718 Introducing Core NFC
If you use In App Purchase pay attention to the changes coming to the App Store. I would recommend the following two sessions:
- Session 301 Introducing the New App Store
- Session 301 What's New in iTunes Connect Some nice improvements: TestFlight limits will rise to 10,000 users later this year. No longer need to manage App icons in iTunes Connect. App subtitle and promotional text fields. Promote up to 20 IAP's. Phased releases.
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.