At this year’s WWDC we have seen Apple yet again push the boundaries of iOS, macOS, watchOS and tvOS.
I spent some time watching the Platforms State of the Union tech video and have summarised each area within this post. I apologise if I have missed anything, or if I have misinterpreted any aspect.
In iOS we have seen the entire UI practically opened up to developers. With iOS10 we, as developers, are now able to interact with rich customisable notifications, create Message Apps and of course, integrate with Siri.
This is mostly achievable via Extensions, using Extensions allows us to securely customise the UI by keeping in the bounds of the notorious Apple Sandbox model.
Starting again with extensions, the example used was ‘OpenTable’ whereby a rich interactive extension can be added with highlights showing imagery, time of booking and for how many people. Apple have thrown in a ‘Get App’ link free for users who don’t have the app installed therefore giving yet another great was to virally increase the growth of our apps.
It doesn’t stop there; we now have our very own Messages App Store. A place where Swift can be compiled and uploaded to iTunes Connect for consumption on the Messages App Store where everybody can send stickers, for example. I hate ‘stickers’, Facebook i’m looking at you!
The example given was a very basic ‘Ice Cream Builder’ showing a 2-way conversation of person X selecting the cone base and then person B selecting the topping and so forth. This does have the ability to be quite huge, in my opinion anyway.
Classes we now have available include:
We still retain the high level of privacy that Apple is renowned for as neither of these classes have any idea of who you are messaging. Perfect.
To aid in development, the iOS10 Simulator has the inbuilt ability to see both sides of the conversation meaning we don’t require the use of 2 devices to test such functionality,
Ok, so Siri is now 5 years old and heavily applauded for being available in 36 different locales’ it really was only a matter of time before ‘SiriKit’ become available.
SiriKit seemed relatively simplistic to implement, add your app specific vocabulary in a PLIST such as ‘UberX’ and ‘PinBoard’ and responses to Siri input is given via extensions.
Not quite stopping there, Apple have allowed us to provide a custom extension to give users in the app to still feel very much at home.
The example used here was ‘Hologram’, cheekily showing off how you can say to Siri ‘Send a Hologram to Obi-Wan saying you’re my only hope’.
SiriKit was shown off wonderfully, it shows how it knows which app you are requesting to make use of, what your intent is and what action to perform from the content provided. It all looks very tidy.
SiriKit is available in all 36 Locales, specify one extension and SiriKit will take care of the rest. Nice!
Ahem, already there are 100,000 apps on the App Store developed in Swift and I can safely say that one I collaboratively developed is one of them.
Apple shown off how, now it’s open source, it was the number 1 downloaded, favourited and watched on GitHub.
Being so Open Source, it’s been ported over from Linux to as far as Windows and because of this they have ‘Swift Package Manager’. The Purpose to which is a place/hub to acquire Cross Platform Packages.
It was good to here that Apple understand how concerning of the speed in which Swift is moving along and evolving, it was and still is a concern of mine as well as many others but hey, App Development never sits still anyway so just get on with it. IMHO.
Ok, so what’s changed:
We now have a whole host of Swift native data types represented much like their ObjC counterparts but with a more ‘Swift’ feel.
· NSDate = Date
· NSCalendar = Calendar
A very ugly looking syntax, GCD, has had a much needed facelift too.
let queue = dispatch_queue_create(“com.syntax.disgusting”,nil)
is now more Swift like:
let queue = dispatchQueue(label: “com.syntax.better”)
The CoreGraphics framework had a much needed Swift facelift too.
Swift 3.0 comes bundled with Xcode8, however, due to it having such a large & breaking change set, Xcode8 also comes with Swift 2.3, yay, meaning us developers can move over as and when we are ready.
Swift Playgrounds for iPad
Swift Playgrounds app IS coming later this year, available on the iPad and seemed aimed quite highly at children/young developers but the demo we got was really cool.
Showing templates, access to ShareKit, challenges, ability to record a coding session and a few other things to play with all while having access to the complete iOS SDk.
This will definitely make my commute more bearable.
Well, the biggest thing to take away from this is third party plugins are going to become extinct but hello ‘Active Line Highlighting’
The code editor in Swift is now a little more 21st century with a colour picker on Swift Color literals and also a helpful image picker too.
If you’re as anal about comments as I am, Xcode now gives built in mark-up generator. SOLD.
But aside from these, Xcode Extensions are now a real thing, build them and publish them to the App Store and off you go. Extensions run as a separate process to Xcode which is a bonus and now the whole system is built under System Integrity Protection. Because of this protection, and correct me if I’m wrong, but this will see the end of things like Alcatraz plugin manager etc.
Apple now bundle the whole API documentation with Xcode installations, apparently making the documentation a 1/10th of the size it was previously.
Some very welcome changes here, a whole new configuration bar for common device sizes with the ability to instantly change device looks to make Size Classes a breeze. The beautiful thing is the layout in interface builder will adapt immediately to your desired selection.
It’s also fantastic to see that now we can zoom a canvas in Interface Builder and still make edits at any zoom level. We really have come a long way since I have been developing when Interface Builder was a separate application.
Some very worth while notable mentions here, 3 new Analysers
UI / Threads / Memory
Xcode now has its own special little place to mention runtime Layout Issues, the Thread analyser can be clever enough to detect race conditions with threading at compile time, lovely :) As for Memory, well, now we have access to a fancy new Object graph, allowing you to clearly see leaks, see which objects have retained reference to which objects allowing you to easily locate and fix an issue with poor memory management.
Wow, a long time coming since things with provisioning got easier. We now have ability to have multiple development certificate support. This means I can drag a new mac into my development entourage and there is no need now to revoke certificates. For simpler solutions you can have ‘Auto Code Signing’ but you can still, as I probably will always use, manual management. That’s manual management per configuration by the way, so we are still getting closer to utter peace with provisioning. Can I get a hoorah so far?
Apple boasted about working closely with Cisco to provide somewhat of a QAS system for apps. At enterprise level, applications network data can be given priority over other apps. Sounds pretty sweet in theory however i’m not ever sure I will see this in practice.
Apple made their Lzfse compression tool open source, probably the most boring part of the video. Must have checked Twitter here as my notes are small.
Anyway, where was we. Logging in macOS has been revamped across the board proving key features such as ‘Live Streaming’, ‘Advanced Filtering’ and an Activity View. Logtastic.
Apple File System
Crikey, I didn't see this one coming but Apple now have a brand new, all singing all dancing Scalable File System, ‘Apple File System’. The file system has many advantages, each rolling onto all of their platforms ‘soon’.
The new file system takes advantage of something they have called ‘Cloning’, basically copy and paste, but with a difference. Cloning allows you to copy over and it cost you 0 bytes in space to do so, until you modify it. Clever eh?
If you haven’t heard of NSUserActivity class, please ask me for a link to something like ‘Beginning iOS Development’.
The NSUserActivity class has been extended to allow for 2 more additional types. People and Places.
Taking WhatsApp as an example, using this new addition you can embed a persons ‘WhatsApp’ directly into their contact card allowing you to jump straight into WhatsApp to begin/resume a conversation with them.
I like this kind of integration. Feels quite tight and very much needed.
Developers now have the ability to modify Push Notification payloads before displaying to the user. They gave an example, to download an image for display in the Notification. Simple solution right, but think outside of the box here and there you have it…. End-to-end encryption of your Push Notifications. Privacy is a huge part of WWDC and i’m really feeling that now.
Going over the highlights of macOS from the Keynote, Tabs was mentioned back again to us for Mac Apps. Basically, if your making use of the NSDocument class this should come as a freebie, otherwise its all hands on code to get there.
A, I suppose, large thing in Sierra is now CloudKit is available to implement in any Mac App, regardless of distribution method. Previously CloudKit could only be used if the app was available only on the App Store. Thats good right folks?
Im personally just as excited for this as I was iOS10, surely I wont be the only one?
Apple’s core beliefs are that Apps that run on your Apple Watch should be
In watchOS3 they have allowed us developers to do exactly that!
Apps that require background execution time have now got it, we have some new API’s that where demoed to show exactly how easy background refresh is and somewhat quite importantly, SpriteKit was shown off.
Having SpriteKit in the watchOS SDK allows us to have animations on not just the foregrounded app, but on notifications too. Pretty immersive.
Apple now allow us to have continuous access to Crown Events, Gesture Recognisers are now a thing and now even Gyroscope data.
It doesn’t stop there, the Apple Watch speaker can be accessed using the familiar AVFoundation framework, ApplePay can now be added to watch apps and last but not least, CloudKit. I’m quite excited to see what us developers can put together with all of this.
Oh and lastly, probably my favourite thing, is app’s now remain in the foreground for 8 minutes since its last use.
tvOS got some notable mentions, but nothing too drastic. PhotoKit is now a thing allowing apps to interact with user’s photos, we now have multi-peer connectivity though and this did get quite some reception.
Turns out, and I wasn’t aware of this, but now developers can force their users to have to use a Games Controller to interact. Previously, the use of a Game Controller had to be optional and you could hear many in the audience happy with the decision.
Lastly, on this topic, the Apple TV Remote App was shown off. Whilst I think the remote app is pretty cool, being the primary and probably the only user of my Apple TV, I wont ever see the need for it. I may, however, be wrong and please provide me with some suggestions if so.
Graphics and Metal
I’ll quickly touch over these, and I mean really quickly.
We now have API access to RAW images and we have a public API to capture live photos. Hurray, I think these 2 alone are pretty big. Apple where shouting that, up until now, we have been making use of ‘SRGB’ for our colours but going forward with iOS10 & Sierra we will be making use of P3 (Wide Colour). I would love someone to put this in layman’s terms and this is what the comments box is for folks :) Just saying, of course.
As for Metal, we can now Live Stream within the ReplayKit and the Game Centre allows you to invite any of your friends to play by sending invites via Message. That’s pretty cool, if you made much use of Game Centre in the first place.
So that’s it, 1h44 minute video wrapped up into a quick 10 minute read for you all. I’d love to hear your thoughts on the topics I have mentioned, and of course, any I may have forgotten.
All the best for now.
Images taken as screenshots from Apple’s freely available slides of the Platforms State of the Union, 2016 tech video.