Implementing the Service Locator Pattern using a Property Wrapper in Swift 5.1

The Services Problem

In every app there is typically a few instances of types (what we will now refer to as a service) that you want to access throughout the app, such as an APIClient or NSPersistentContainer.

If you were developing a small app, you might decide to pass these services around as you navigate through the app.

Either through initialisers:

let detailViewController = DetailViewController(apiClient: apiClient, persistentContainer: NSPersistentContainer)

Or lazily using properties (especially when dealing with UIViewController subclasses):

let detailViewController = DetailViewController()
detailViewController.apiClient = apiClient
persistentContainer.persistentContainer = persistentContainer

While this works fine, it gets a bit cumbersome when you need to add a new service, such as analytics, as it means you need to add it everywhere throughout your app. Moreover intermediate objects end up referencing services they don’t even care about, just because another object further on in the app might take use of it.

Another approach will be to make these types singletons. The major problem with singletons is testability, as you have to reference a concrete type and not a protocol, which makes it impossible to swap them out for mocking during tests.

How I solved this previously was to pass around a container with all of my services, note that I am referring to my APIClient by the API protocol that it implements:

struct Container {
    var apiClient: API
    var persistentContainer: NSPersistentContainer
}

I then pass this around my app, preferably through initializers but sometimes as a property:

let detailViewController = DetailViewController(container: Container)

This avoids the problem when adding a new services and also reduces amount of boiler plate code, but its still not super elegant.

Property Wrappers

When property wrappers were announced, I thought would it be nice if I could just refer to my service using one, such as:

class DetailViewController: UIViewController {
    @Service var apiClient: API
    @Service var persistentContainer: NSPersistentContainer
}

But how do we get there?

Service Locator Pattern

I have looked at a lot of dependency injection implementations in Swift and in other languages, but often found them to be over-engineered, but I concluded at this point I was essentially looking to implement the service locator pattern.

From Wikipedia

The service locator pattern is a design pattern or anti-pattern used in software development to encapsulate the processes involved in obtaining a service with a strong abstraction layer. This pattern uses a central registry known as the “service locator”, which on request returns the information necessary to perform a certain task.

API Design

I am going to keep the API design discussion limited to the interface, but you can grab the implementation at the end of the article.

We are going to start off with a ServiceRegistry to register our services with:

var registry: ServiceRegistry = ServiceRegistry()

We can register a service using an instance of a given type:

registry.register(apiClient)

So the service locator can work well with testing and mocking, we also want to be able register a service but refer to it via a protocol that it implements:

registry.register(apiClient as: API.self)

And you can register a service but resolve it later:

registry.register {
    return APIClient()
}

And you can also support referring to the lazily created service by a protocol that it implements, by specifying the protocol as the return type:

registry.register { () -> API in
    return APIClient()
}

This means we end up with a public API for the Service Registry of:

public struct ServiceRegistry {
    public mutating func register<Service>(_ service: Service)
    public mutating func register<Service>(_ service: Service, as serviceType: Service.Type)
    public mutating func register<Service>(_ block: @escaping (() -> Service))
}

Once we have registered our services with our registry we then want to create our service locator:

let locator = ServiceLocator(registry: registry)

We then want the locator (via generics) to return the service back:

var apiClient: API = locator.make()
var persistentContainer: NSPersistentContainer = locator.make()

This means we end up with a public API for the Service Locator of:

public struct ServiceLocator {    
    public let registry: ServiceRegistry
    public init(registry: ServiceRegistry)
    public func make<Service>(_ serviceType: Service.Type) throws -> Service
}

Now we have this setup we want to make our property wrapper.

The logical first step in creating a property wrapper would be to pass in a ServiceLocator:

class DetailViewController: UIViewController {
    @Service(locator: serviceLocator) var apiClient: API
    @Service(locator: serviceLocator) var persistentContainer: NSPersistentContainer
}

This isn’t very DRY, and also how do we get the service locator there?

To clean this up we are going to add the concept of a shared Service Locator, which we can set on app launch:

ServiceLocator.shared = locator

This will give us global access to our services

We will then use a property wrapper to make this nice an clean.

This means to access a service we can no just use @Service in front of a variable and let are property wrapper and service locator do the work:

class DetailViewController: UIViewController {
    @Service var apiClient: API
    @Service var persistentContainer: NSPersistentContainer
}

This means we end up with a public API for the Property Wrapper of:

@propertyWrapper
public struct Service<ServiceType> {
    public let locator: ServiceLocator

    public var wrappedValue: ServiceType {
        return try! locator.make(ServiceType.self)
    }

    public init(locator: ServiceLocator) {
        self.locator = locator
    }

    public init() {
        self.locator = ServiceLocator.shared
    }
}

Implementation

The implementation is less than 100 lines of code. The only extra implementation detail is my internal ServiceFactory to handle all of resolution approaches. An improvement would be to add a cache to the service locator, so that services only had to be resolved once, but that would of made this example overly complex.

public struct ServiceRegistry {
    public enum Error: Swift.Error {
        case notRegistered(Any.Type)
    }

    private struct ServiceFactory<Service> {
        let block: (() -> Service)

        init(block: @escaping (() -> Service)) {
            self.block = block
        }

        func make() -> Service {
            return block()
        }
    }

    private var factories: [Any] = []

    public init() {

    }

    public init(registry: ServiceRegistry) {
        self.factories = registry.factories
    }

    public mutating func register<Service>(_ service: Service) {
        register(service, as: type(of: service))
    }

    public mutating func register<Service>(_ service: Service, as serviceType: Service.Type) {
        let factory = ServiceFactory { () -> Service in
            return service
        }

        factories.append(factory)
    }

    public mutating func register<Service>(_ block: @escaping (() -> Service)) {
        let factory = ServiceFactory(block: block)
        factories.append(factory)
    }

    internal func make<Service>(_ serviceType: Service.Type) throws -> Service {
        if let factory = factories.first(where: {($0 is ServiceFactory<Service>)}) {
            let service = (factory as! ServiceFactory<Service>).make()
            return service
        }

        throw Error.notRegistered(Service.self)
    }
}

public struct ServiceLocator {
    public static var shared: ServiceLocator = ServiceLocator()

    public let registry: ServiceRegistry

    public init() {
        let registry = ServiceRegistry()
        self.init(registry: registry)
    }

    public init(registry: ServiceRegistry) {
        self.registry = registry
    }

    public func make<Service>(_ serviceType: Service.Type) throws -> Service {
        let service = try registry.make(Service.self)
        return service
    }
}

@propertyWrapper
public struct Service<ServiceType> {
    public let locator: ServiceLocator

    public var wrappedValue: ServiceType {
        return try! locator.make(ServiceType.self)
    }

    public init(locator: ServiceLocator) {
        self.locator = locator
    }

    public init() {
        self.locator = ServiceLocator.shared
    }
}

“By innovation only.” – Keynote Thoughts and Predictions

The summer has flown by, so that means only one thing. The iPhone Keynote, but what should be expect to see?

iPhone

This year we are set to get 3 iPhone Models to replace the iPhone XR, iPhone XS and iPhone XS Max. Unlike previous years, all of the models will be refereed to as the iPhone 11, with the later 2 models being suffixed with Pro.

The iPhone 11, the upgrade to the iPhone XR, will continue to feature the same LCD Liquid Retina Display that it debuted with last year, but it will gain an additional wide angle camera for the equivalent configuration of lasts years iPhone XS and XS Max

The iPhone 11 Pro, the successor to the iPhone XS and XS Max is also set to gain an additional camera in the form of an ultra wide angle camera, meaning that they will both feature a 3 camera configuration. The hope of the 3 camera configuration is that the iPhone will be able capture better low light pictures, and hire quality videos.

In terms of other hardware improvements, the iPhone is set to get Bi-Lateral inductive charging, which will allow you to charge your AirPods directly from your iPhone.

Another major hardware change is the subtle removal of 3D Touch, thus making Haptic Touch the universal way to access contextual content across iOS. I have mixed feelings about this as I actually like and use 3D Touch regularly, but I guess Apple have the numbers to back up removing this feature from this years iPhones.

iOS

iOS 13…. 13.1? The iOS 13 Betas have been a rough ride for developers and beta users this year. From a developer’s perspective the major headline features of Combine and Swift UI, have been subject too numerous revisions and changes form Beta to Beta. In fairness this is the right call for Apple to make, as will have to live with these changes for years to come. The more worrying issues where related to some more foundational features such as iCloud, which has caused data loss for a lot ofusers and resulted in feature changes such as shared folders being bumped from the last betas.

I would expect Apple to start accepting iOS and iPadOS app submissions compiled against the iOS 13 SDK,right after the Keynote, with iOS 13.0 rolling out to customers next week.

In addition to iOS 13, I would expect to see iOS 13.1 too also be announced for release at the end of the month. This will include some of the removed features, such as HomeKit triggered shortcuts reinstated. The iCloud changes? Let’s not mention those.

macOS

iOS isn’t the only update getting released this month, with this years annual update to macOS, Catalina, also set to be given a release date at this event. The highlight of this macOS release is Catalyst, the technology that allows iOS apps to be brought to the Mac. Expect to see a lot of good and not so good iOS apps to make their way over to the Mac in the next few months, and I would expect to see these demoed at the keynote.

Apple Watch

Apple Watch Series 5 is set to get unveiled, with the major change be the inclusion of ceramic and titanium models. Logically these would be Edition Ranges, something that is currently not in the Series 4 line up, but with this in mid I would expect them to be priced in the £1300 to £1500 range.

AppleTV+

AppleTV+ got unveiled earlier in year alongside the Apple Card and Apple News+, but unlike those AppleTV+ has been released yet, in fact we don’t even know the price. With the world’s tech media taking a keen interest in the iPhone unveiling its seems logical that Apple would take the opportunity to show off its latest subscription service. Will we see some more content? More than likely. Will we find out the price? Im less sure.

Apple Arcade

At WWDC in June Apple Announced another subscription service, Apple Arcade, and like AppleTV+ we are yet to find out a price. Unlike AppleTV+ I am expecting to find out the the price, more than likely $4.99 a month, and will be released along side iOS 13 (or maybe 13.1) this month. The most interesting is what content Apple have managed to acquire for its subscription service, as Apple requires mobile exclusively for all games on Apple Arcade, its is mostly going to be completely new content.

Apple Tag

Although there are rumours of a redesigned MacBook Pro, boasting a 16” display, and even AR Glasses being imminently announced, I think the most likely completely new product to be announced at this event is Apple Tag. Apple Tags are set to be UWD Bluetooth devices that can be attached to items, which periodically broadcast their existence to all iPhone, so that they can be found using the Find My app. Not revolutionary but useful nevertheless.

WWDC 2019 Keynote Thoughts and Predictions

This year’s WWDC looks like it is going to be a big one, and rather surprisingly a big one for the Mac, but what should we expect to see…

macOS 10.5

Marzipan

The major theme of WWDC this year is set to be project Marzipan, which will allow iOS, or more specifically iPad apps, to be recompiled to run natively on macOS.

Apple announced Marzipan, or rather UIKit on the Mac, at WWDC last year, and they have been using it to develop the Home, Reminders, Voice Memo, Stocks and News apps in macOS 10.14.

Logically more of Apple’s own apps make the jump this year, with Reminders and Books being the most obvious candidates. The most interesting side effect of iOS apps coming back to the Mac, will be the start of breaking up iTunes into individual apps, with the Podcast app being the first.

For third party developers I expect it to be as simple as checking a checkbox in Xcode, but for an app to feel truly at home on the Mac, developers will need to add Mac specific touches such as Menu Bar and Touch Bar support. In addition to this, developers will also need to update their app to support this years latest iOS features, in additions to features they may have been neglecting in the past such as Keyboard Shortcuts and Drag and Drop.

Sidecar

Handover support is going to be extend to handing over entire windows between Mac and the iPad, allowing the iPad to essentially act as an extra display for the Mac.

Screen time

Last year Apple introduced Screen Time to iOS, so it would seem natural to bring this over to macOS this year. It would be useful if Apple allowed app developers to break down app usage further e.g. on a per document basis.

iOS 13

Dark Mode

The introduction of Marzipan leads to the logical conclusion that iOS 13 will see the introduction of Dark Mode, using the same implementation as macOS 10.14 has been using for the past year.

Multiple Windows

In addition to Dark Mode, iOS is also set to get support for multiple windows, which allow you to have multiple documents open in split view. macOS introduced automatic Tab support in macOS 10.3 (based on coalescing windows), so it would be to see this carried over to iOS, as tabs are often more suitable than using split view for quickly switching between documents.

tvOS 13

Apple Arcade

It’s going to be bumper year for Apple’s 2 primary platforms, but with Apple Arcade coming later this year it makes perfect sense for Apple to let developers know how they can get involved and who to talk to during WWDC.

watchOS 6

Workouts

Supporting additional workout types seems like a logical addition to watchOS 6, but it is possible for this to come alongside new hardware later in the year.

App Store

Apple Watch apps are set to go independent this year. Until now Apple Watch apps have to be bundle in with their iOS counterpart, but in watchOS 6 they will be available to download, and more importantly buy, directly from the watch.

Mac Pro

With the MacBook Pro receiving an update last week, probably to avoid any comments about the lack of a updated keyboard, it still leaves us with the possibility of the unveiling of the new Mac Pro and Cinema Display.

I would expect the Mac Pro to be unveiled at WWDC, and although an ARM transition for the Mac is on the horizon, I would expect this to be an Intel Machine, and the last one to move to ARM at that. The Mac Pro won’t be cheap, I expect the base price to be $2999 and to be available by the end of the year.

“Its show time.” – Keynote Thoughts and Predictions

Apple’s first keynote of the year is set to be a bit out of the ordinary. Following on from a week of numerous hardware refreshes, it has cleared the way for a keynote that focus solely on services rather than hardware or software, but what exactly should we expect to see get announced?

Apple TV

No not that Apple TV! This is a subscription service akin to Netflix or Amazon Prime Video, and will probably actually just be called Apple Video. Apple have been signing up talent and commission shows for over a year now, and is set to launch its own media streaming service this year. The service will obviously be available on Apple hardware, but also on numerous other TVs via AirPlay … I wouldn’t even be surprised to see an Android app!

This keynote is set to feature numerous celebrities and creators talking about their upcoming shows, the question is wether Apple have signed up enough existing content to make the service attractive at launch. More than likely it will launch in US only later this summer for $9.99 per month.

Apple Magazines

Apple is set to unveil a new subscription service in Apple News, which will allow subscribers to view context that normally resides behind a paywall. The major question is how many of the big players will be in on the deal, with the rumoured 50/50 split between publications and Apple, publications would need a lot of page views to make up the numbers. Apple has lots of magazines signed up curtesy of its acquisitions of texture last year, but signing up the major newspaper will represent a more trickier challenge to Apple. This is set to roll out imminently for $9.99 per month.

Apple Games

This one isn’t as nailed on as the other 2 services, but Apple has been rumoured to be releasing a gaming subscription service … the caveat being that the partnering games will give up all their content for free without in app purchases. Unlike the recently announced Google Stadia and Microsoft xCloud, the games themselves won’t be streamed, it’s just the free games and content that’s included in the subscription. The release of Mario Kart for mobile was recently delayed, so we can all hope it’s included in this services. I would expect this to roll out with an iOS 12 update this summer for $9.99 a month.

Apple Prime

OK, let’s be serious, this is the probably the only thing it won’t be called, but with all these subscriptions in addition to Apple Music, and indeed iCloud, it would make sense for Apple to bundle all or some these services together. I could imagine getting the magazine subscription for free if you subscribe to Apple Music and Video, but that sounds a bit too generous for Apple!

Apple Card

What if the card in your Apple Pay wallet, was an actual digital representation of your Apple Credit Card? Well this is one of the rumours doing the rounds, and Apple have been doing a trial with Goldman Sachs to make it happen. I think we haven’t heard enough about this for it to be imminent, but if I get cash back on Apple products and services then I’m in!

“There’s more in the making.” – Keynote Thoughts and Predictions

Apple’s fourth and most likely final Keynote of 2018, was announced with over 370 different variations of the invite, but what different things should we expect to see announced at the Keynote itself…

iPad Pro

The iPad Pro is set to receive the most significant update to the iPad lineup to date, with an “Edge to Edge” Liquid Retina display akin to the iPhone XR that was released last week. This means that the iPad Pro will continue to lack 3D Touch support, but will be able to maintain the ProMotion display which didn’t make it across to Apple’s OLED screens found in the iPhone X and XS.

The iPad Pro will also gain Face ID, but unlike the iPhone it will work in both portrait and Landscape orientations. Moreover the iPad Pro will not be gaining a notch to accommodate the sensors, and will simply incorporate it into the rim that will be present the whole way round the device.

The iPad Pro is set to get an update to both of its connectors, with the lightning port rumoured to make way for a USB-C port, which will give it enough bandwidth to connect to 4K external displays. The “Smart Connector”, or shall we say Keyboard Connector, is set to move to the back of the iPad, allowing peripherals … keyboards to click on magnetically.

Apple Pencil 2

Alongside the third revision of the iPad Pro lineup, we are set to see the second revision of the Apple Pencil. The Apple Pencil will auto pair with the iPad like the Logitech Crayon, and more interestingly gain gesture support for additional functionality. The Apple Pencil will also move to USB-C so it cab be charged directly from the iPad Pro.

MacBook

The MacBook is set to get a spec bump to the Intels 8th Generation Chipset, but nothing overly exciting.

MacBook Air

The MacBook Air was the defacto Mac for a number of years. It was slim, fast and for a Mac, inexpensive. Since then times have changed (unlike the MacBook Air itself) , and with its Non Retina display and huge bezel it has started to show its age.

The MacBook (Air?) that is set to be announced at the Keynote, has been developed to occupy the magical $999 price point that the MacBook Air currently hovers around. Expect to see a device a lot like the 13” MacBook Pro without Touch Bar, just with slightly slower internals, rather than a super slim device as that is already covered by the MacBook.

Mac mini

The Mac mini was originally announced at Macworld 2005 with the slogan BYODKM: Bring Your Own Display, Keyboard, and Mouse. The Mac mini was designed as low cost $499 entry level Mac, to encourage switchers from Windows. Now the Mac mini isn’t a machine for switchers, its the small headless Mac, that people use for variety of things such as running a Media server, a CI Build Machine etc, so expect the update to reflect this, with a higher base price and powerful build to order options.

iMac

The iMac is also set to receive a spec bump to the latest CPUs, which also means an increase of cores at the high end. I wouldn’t be surprised to see it incorporate a T Chip similar to the one introduced in iMac Pro unveiled last year, as Apple slowly migrate all of their Mac’s over to this new security architecture.

AirPower

It has to ship sometime doesn’t it? With it featuring in the iPhone XS manual you have to assume it is still being worked on, so what better time to release it than just before the holidays.

“Gather round.” – Keynote Thoughts and Predictions

Apple’s third Keynote of the year is set to focus around the iPhone and Apple Watch lineups, but what changes should we expect to see?

iPhone XS and iPhone XS Max

Although everything but the names have already been leaked, we are due to see a spec bump to the iPhone X introduced last year, in addition to a larger 6.5 inch model. In the tradition of iPhone “S” cycles, most of the improvements are internal. The iPhone XS is due to have a faster processor, more RAM, and improved rear cameras. The iPhone XS and iPhone XS Plus will also be available in a new Gold Band colour option, in addition to the Silver and Space Grey options currently available.

Below the iPhone XS in the lineup we are also set to see then introduction of the iPhone 9, which will feature a 6.1 inch LCD display and the now iconic notch. In addition to the lack of the OLED display, the iPhone 9 is also going to lack the ability to charge wirelessly and only have a single rear camera.

The combination of a cheaper price but bigger screen, tends to lend the iPhone to more emerging markets rather than simply adding choice to the lineup. This would be made even more clear if it ships with Dual SIM support as rumoured earlier in the year.

If the this year’s iPhone follows the typical release pattern, expect preorders to start on Friday, with delivery starting the following Friday.

Apple Watch Series 4

The Apple Watch wi see its first screen size change since it was first introduced back in 2015, while maintaining a similar, albeit slightly slimmer form fact when compared to the current Series 3 models. The the 42mm model is set to have its resolution increased from 312x390 to 384x480, giving the Apple Watch an edge to edge display allowing it to display more content and in particular complications on Watch faces. Due to the similar form factor, all of the existing watch bands will remain compatible. The Apple Watch Series 4 will feature a gold stainless steel option to match the newly available colour on the iPhone XS.

AirPower

Announced at last year’s iPhone announcement, AirPower is set be made available alongside this year’s iPhones, alongside the updated AirPod wireless changing case.

iPad Pro

The new rounded screen iPad Pro is set to be unveiled, with Touch ID being replaced by Face ID. Unlike the iPhone, the iPad Pros bezel will mean that it doesn’t have to gain a notch to accommodate Face ID meaning it won’t be restricted a single orientation.

iOS 12

iOS 12 was original shown at WWDC in June, this event will see a recap of iOS 12 headline features in conjunction with some App demos. Expect it to be available for download on Wednesday the 19th of September.

Mac

I am personally expecting to see major updates to the Mac line up this year, but I’m not sure it will make it into this event. The iMac, iMac Pro and MacBook are all due an annual spec bump, but the more interesting Mac’s are the Mac mini and MacBook Air.

Mac mini

The Mac mini, which hasn’t been updated since 2014, is set to be updated to cater for a wider range of customers. It will move away from being the “cheap” Mac and become the small Mac. Expect it to lose the Superdrive but gain Quad and Six Core Options.

MacBook Air

The MacBook Air is a still a popular machine, predominately due to its price, and because it doesn’t require you to purchase a set of dongles to use all of your old peripherals. I expect Apple to rename the current MacBook to the MacBook Air (as it is the slim and light model after all), and rename the 13” inch MacBook Pro without Touch Bar to the MacBook, possibly ditching its P3 display along the way.

WWDC 2018 Keynote Thoughts and Predictions

Following on from Apple’s educational event in March, WWDC is now upon us, but what should we expect to see announced at the event this year?

iOS

A yearly update to iOS is a given at this point, with iOS 12 focusing on stability, reliability and performance.

ARKit already had an update to version 1.5 mid OS cycle in iOS 11.3, so I would expect ARKit to hit version 2.0 at WWDC, with support for object permanence and multi devices.

SiriKit is also set to get some additional domains, but less be honest it needs more of an overhaul than an update

Apple are also set to open up NFC on iOS, which will enable functionality such as using an iPhone or Apple Watch to open NFC door locks in offices and hotels.

Google announced a range of features under “Digital Wellbeing” banner at IO, in regards to curbing smart phone addiction, and it makes sense for Apple to follow suit, even if it is just to limit time spent in apps via using parental controls.

Notifications are in desperate need of an overhaul as they can easily become overwhelming, I would like to see additional controls for filtering notifications and having them automatically group into threads.

Animoji … remember them? I would expect Apple to add some more Animoji’s and add support for them in realtime using FaceTime.

tvOS

tvOS will also get an update, but I think it will just be coming along for the ride feature wise with iOS.

watchOS

watchOS will continue to gain more features in the health and fitness area, such as additional workouts and data tracking.

Always on watch faces sounds like an obvious candidate but I imagine Apple will tie this with a hardware revision.

audioOS

The HomePod has to get smarter, it is as simple as that. Support for more Siri domains is an obvious improvement, but I would like to see support for multiple users this year too, and with stereo support shipping this week that is the next obvious feature to tick off the list.

macOS

As with iOS, macOS is also going to receive its annual update at WWDC, again with a focus on stability, reliability and performance. Unlike iOS, macOS has had a number of security issues during last year, so even if it is not alluded too during the keynote, you could imagine security has also got some attention internally in the last 12 months.

Initial the rumours pointed to a unified UI library between iOS and macOS, code named project “marzipan”, but the rumour mill has thrown cold water on this happening this year.

When it does arrive it will be interesting if it is just a native shim around the iOS Simulator, with additional support for Trackpad/Mouse and the Menu Bar. Another approach would be to release UXKit which Apple use internally for Photos on macOS, to give AppKit UI classes the same API as their UIKit Counterparts. The third approach, and the least likely to see this year is to create a new UI Framework, that not only unifies iOS and macOS (possibly watchOS too) but behaves better with Swift’s type safety and optional handling.

The annual rumoured dark mode is also an obvious candidate to see the light of day this year, along with bringing Apple News back to the Mac.

iPad Pro

Now that the entire iPad lineup supports the Apple Pencil, Apple will want to increase the differentiation between the iPad Pro and iPad lines.

The iPad Pro is set to get its regular performance bump, in addition to a smaller bezel and Face ID. The bigger question is if the iPad Pro will bed updated at WWDC or along side the iPhone in September.

I would also like to see a bigger 15 inch iPad Pro, but I won’t hold my breath on that one!

MacBook Pro

The MacBook Pro is set to receive a processor update, that will see a 6 core option in the 15 inch model and 4 core processor option in the 13 inch model. In addition to this one would hope that the MacBook Pro’s keyboard receives an update that solves its reliability issues that seem to be becoming more and more prevalent.

AirPower

I personally thought this was coming app the last event, but surely at WWDC Apple will announce the price and availability of AirPower alongside the compatible AirPods case.

“Let’s take a field trip.” – Educational Event Thoughts and Predictions

Apple’s first event of the year will be focused on education, and even though Apple have now moved into Apple Park, this event will be held offsite in a Chicago High School, but what should we expect to see announced?

iOS 11.3

iOS 11.3 has been in Beta for a little over 2 months now, and is probably Apple’s most feature packed point release to date. Here are the biggest features in this release.

AirPlay 2

AirPlay 2 comes with 2 major benefits over AirPlay 1, which are especially relevant if you own one or more HomePods. The first is to remove the 2 seconds latency when stream with AirPlay 1, the second is the ability to stream to multiple device simultaneously while keeping the audio in sync.

Battery Health

In iOS 11.3 you will now be able to check the health of your battery and disable CPU throttling, but by doing this you want to run the risk of your device suddenly shutting down and restarting.

Messages on iCloud

Messages in iCloud was originally meant to roll out in iOS 11.0 but then mysteriously disappeared! This feature syncs and stores you iMessage history in iCloud, which will free up space on your devices and hopefully mean the end of out of order and missing messages.

ARKit 1.5

Rather than waiting for iOS 12 Apple is pushing out a significant update to a framework in a point release. The major enhancement in ARKit 1.5 is support for vertical planes, which should enable a whole host of apps.

Business Chat

Customers will now be able to chat with businesses (for customer support) through iMessage, rather than the current web based chat widget solutions that are no becoming common place on most websites. Although this sounds great, I’m not that optimistic that this will be readily adopted.

Animoji

New Animoji characters … yeah I’m not using Animoji either.

ClassKit

iOS 11.3 is set to include a new Framework ClassKit which will allow apps to integrate better in the classroom environment, e.g. submitting assignments etc.

Classroom

iOS 11.3 is also set to introduce a Classroom app, but we will have to wait and see what functionality this brings, but with it only appearing for iPads provisioned in educational settings it probably won’t be anything exciting for most users.

iBooks

iBooks is set to get an update, or at least be renamed to Books at this event. Apple tried to reinvent the text book market before with iBooks and iBooks Author, so it will be interesting to see if Apple double down on this again.

iWork

The iWork suite of apps; Pages, Numbers and Keynote, have not seen a significant update (unless you count collaborative editing … and I'n not) for a few years now so they are all due an update. I would expect to see anything massive but at least update to support the formation ClassKit.

MacBook Air

The Mac laptop line currently starts at $999 with the 13 inch MacBook Air, and although it received a number spec bumps over the years it is essentially the same design as it was in 2011. This means unlike the rest of Apple’s Laptop line up it has no Retina Screen, or USB-C, but thankfully for some, it still does retain the the old keyboard design.

The optimist in me would like to the see the MacBook Air removed from the line up and the MacBook/MacBook Pro reduced to $999 (even if it meant a spec reduction) but I think Apple will reduce the price of the MacBook Air, possibly with a spec reduction of its own to better suit the price conscious needs off the education market which is starting to be dominated by Chromebooks.

iPad

It is possible that Apple is throwing us a curve ball with the event invitation depicting a sketched Apple logo, but I would expect to see the base iPad model be updated to include support for the Apple Pencil. Apple Pencil support will be the only significant update to the iPad, possibly alongside a price drop, with the iPad Pro differentiating itself by reducing its bezels and adopting Face ID with an update of its own later in the year.

AirPower

AirPower was unveiled last September in Apple’s Fall event, but its should finally be available to purchase after this event. Logically this also means the AirPods compatible case, but will we also see a refresh of the Apple Pencil to support AirPower?

“Lets meet at our place.” – Keynote Thoughts and Predictions

On Wednesday Apple will hold their first public event at the new Apple Park campus, and therefore their first product unveiling in the Steve Jobs Theatre (which deserves its own grand reveal), but what software and hardware announcements should we expect to see?

iOS 11

iOS 11 already got significant Keynote time at WWDC in June, but it will still get recapped at this event, with the major fous being on ARKit. It will be interesting to see if the enhancements for iPad will get any stage time at this event, without any iPad related hardware announcements. Apple typically makes the GM available to developers on the same day, with the public release a week later on Wednesday.

macOS 10.13 High Sierra

macOS won’t get much stage time if at all, especially as the Keynote will lack any Mac hardware announcements, but I would expect to at least hear about the release date next Wednesday, and possibly a recap of what we saw at WWDC.

Apple TV 5th Generation

This could potential be pushed back into an October release, but it is set to be such a minor revision, with the only significant updates being 4K and HDR support, that it will only get a few minutes of stage time whenever it is announced. Alongside the new hardware, we will also get the ability to rent and purchase 4K/HDR content from iTunes.

Apple Watch Series 3

The Apple Watch Series 3 is set to gain LTE Cellular radios meaning that it will be able to make and receive both calls and messages without being tethered to an iPhone. I expect the SIM to be a virtual one as with the iPad (although they also have a SIM tray too), and your number will be shared with the paired phone. If like the iPad LTE capabilities cost another $130 in addition to a monthly fee, I’m not sure how popular of a feature this will be. Either way it will still be a substantial update for anyone still using a Series 0 Apple Watch, and will also be available in a couple of new finishes.

iPhone 8 and 8 Plus

Following on the the iPhone 7 last year (which you could argue was a tock rather than a tick release in itself), the iPhone will see it regular “S” update with a faster processor and upgraded dual camera on both models.

Another noticeable change to the iPhone 8 and 8 Plus’s design will be its glass back, which has been done to support inductive charging. The charger itself will be sold as an additional accessory however, more than likely retailing at around $49.

The iPhone 8 and 8 Plus will take on the IPhone 7 and 7 Plus’s place and price points in the iPhone line up.

iPhone X

The iPhone X, named to indicate the 10th anniversary of the iPhone, is the headliner for this event and indeed this year, as it is set to receive its most significant hardware revision to date.

The iPhone X will feature a 5.8 inch OLED edge to edge display, which will be a noticeable step up in terms of contrast when compared to the LCD display in the iPhone 8, and will also feature True Tone which to date has only been available on the iPad.

The edge to edge display means that there is no room for a home button. The rumours have suggested that Apple tried to embed the Touch ID technology under the display, but when that failed they decided to go with facial recognition known as Face ID, rather than put the home button the back.

The lack of a home button will also lead to the unveiling of numerous previously unseen updates to iOS 11, to support a heavily gesture driven UI.

The iPhone X is expected to start at $999 in Jet Black, Silver and Copper, with the usual $100 storage bumps. More than likely this with 64GB, 256GB and 512GB.

WWDC 2017 Keynote Thoughts and Predictions

For the first time since 2014, WWDC is Apple’s first keynote of the year, which naturally means that there is a lot of pent up excitement and expectation surrounding the event. WWDC has always been the most significant event for developers, but what should we expect to see this year…

AI

AI and in particular ambient computing devices such as the Amazon Echo and Google Home are becoming ever more present in the last couple of years, and although Apple launched Siri way back in 2011 it finds itself playing catch up. AI is set to be a major theme for WWDC this year, as Apple continues to make improvements while maintining a major focus on privacy and internationalisation.

Home Kit

Apple’s integration with smart home devices centres around HomeKit, which means that providers have to go through a rigours certification process and include a proprietary chip in their devices. I don’t expect many changes to HomeKit this year, but a possibility an update of its adoption during the keynote.

Analysis APIs

I would expect Apple to open up some of its on device data analysis APIs to third party developers, and these API will be optimised for any AI co-processors that will be added to upcoming devices.

Siri Domains

The biggest thing holding Siri back is the available domains that it supports, so seeing these expand this year is a no brainer. The most obvious domains are music controls and to dos.

Siri Ambient Device

Does it exist? Does it have a screen? Nobody outside of Cupertino knows, but if it does, one thing is for sure, that it will revolve around Siri. Apple have pre announced a devices months before its release before (AppleTV, iPhone and Apple Watch to name but a few) but Apple could get away with just announcing the new enhanced Siri capabilities in its other SDKs at WWDC, and leaving the big unveil of the hardware for the holidays.

Unlike other Siri hardware, an ambient device shouldn’t be tied to a single user, so support for detecting individual users by their voice would be an important feature of this device.

A major focus of the Siri hardware will be music, in particular sound quality and its integration with Apple Music.

iOS 11

iOS, as has been the case since iOS 5 will be the headline update at WWDC. While nobody is expecting a major overhaul to the UI like in iOS 7, the UI will continue to roll back the extreme aspects of flat UI introduced in iOS 7, such as getting filled buttons, thicker fonts etc

iOS 11 is will have major improvements for the iPad, including an overhaul of the multitasking interface, and the ability to drag and drop files between apps.

Dark mode is an obvious feature, and is already available in macOS and tvOS. Integration at the OS level means that it can be activated automatically in conjunction with night shift.

macOS

Improving AI and therefore Siri on macOS will be a major area of focus this year, which will hopefully include merging Spotlight and Siri together. SiriKit came to iOS in 10.0 last year and watchOS 3.2 earlier this year, so this update of macOS should see it make its way across to the Mac.

Developers can hope (as we do every year) that UIKit, or at least a UIKit replacement/wrapper for AppKit is unveiled at WWDC. The ability to share more than the model layer code between all of Apple’s platforms would probably see the biggest cheer of all at the keynote.

iOS 10.3 saw millions of iPhones successfully migrate their file systems from HFS+ to APFS, so I would expect to see this release of macOS to do the same.

watchOS

watchOS 3 was a major update, focusing on fitness and simplifying the most common real world workflows on the Apple Watch. watchOS 4 is set to add more refinements and niceties akin to unlocking your Mac, with any major features requiring new hardware such as a cell radio or glucose monitor.

tvOS

The Apple TV hasn’t as of yet set the world on fire, but rumours are rife that we will finally get an Amazon Prime app for tvOS. I expect tvOS to get an update, but nothing major as the single thing holding back the platform is the lack off content.

iPad

The “iPad” received an update in March, but both of the iPad Pro models are due for an update, with the 12.9 and 9.7 inch versions been released in November 2015 and March 2016 respectively. The iPad Pro line up will game feature parity and include a True Tone display in both models, it would be nice to see them both gain 3D Touch alongside their existing Apple Pencil support.

The iPad Pro 9.7 inch will be replaced with a 10.5 inch, thin bezelled screen, at the same resolution (but a higher pixel resolution) as 12.9 inch model, akin to the iPad and iPad mini.

In regards to the iPad mini, its days are numbered with iPad’s price drop and popularity of the Plus size phones.

Mac

The MacBook was released in the first half of 2015 and updated at the same time last year, so an update to the MacBook is due but just a spec bump isn’t really keynote worthy.

There are also rumours of a update to the MacBook Pro, which already saw a significant overhaul in October, so this will only be a minor spec bump.

The iMac is a bit long in the tooth, last being updated in October 2015 but it is already fast so I wouldn’t expect to see it unless we get the iMac Pro.

Developer Tools

Although it only gets some words on a slide during the main Keynote, saving the rest for the state of the union presentation later in the day, the developer tools will obviously get an update at WWDC. Last year Apple finally fixed automatic code signing (for all but the most complex of cases), so next on the list has to be improvements regarding Swift, such as the refactoring tools.

Swift is now being developed out in the open, so I wouldn’t expect to see any major announcements on that front.

 
Page 1 of 7