WWDC 2019, A Developer’s Opinion
Hello! This is Oscar, an iOS Developer from Fenrir, Inc.
Last week I had the opportunity to attend Apple’s Worldwide Developers Conference for the very first time, and let me tell you, getting to know about the upcoming changes and new features straight from Apple is quite the experience. The Keynote in particular gave us, the developers, the first look into what developing for Apple products will be like later this year.
It was very exciting to listen to all the new features coming later this year, but I couldn’t help but to feel a little bit worried about how these changes will impact the development workflow I’m already used to. Because of it, I decided to write an article that will mainly focus on some of the changes and hurdles we might expect while developing for the new iOS and watchOS versions.
If you are interested in finding out more about consumer focused features, it might be better to check out some of the other media outlets with far more in-depth coverage of what was presented in this year’s Keynote.
It’s well known how apps for the Apple Watch aren’t quite as “useful” as we originally had expected. From a developer’s point of view, what we can do is quite limited due to the current APIs specifications, and most of the functionality is restricted to apps that focus on fitness and health.
Apple is trying to solve this by shifting the way Apple Watch apps are treated. Apple Watch apps will be available on their own Apple Watch App Store, which will be fully accessible through the Apple Watch itself. As for developers, we get access to two APIs that will significantly increase what certain apps can do.
Extended Runtime API
The first new API is the “Extended Runtime API”. This will give extended runtime to session-based tasks, allowing our apps to continue running on the background as long as the task is handled in a session like manner, as well as giving our apps access to more data such as heart rate, motion and location. Because of this, the need of having a watchOS version of some of our apps might have shifted from just a nice extra feature to something that seems as the standard.
Streaming Audio API
The second API is the “Streaming Audio API”. Up until now, an iPhone was required as the gateway in order to stream content to the user, making the Apple Watch behave just like a remote control for third party apps. This new API will break the dependency between the watch and the iPhone so that users can enjoy more freedom. Developers that maintain apps with audio streaming capabilities should prepare to implement this functionality as users will soon start expecting it.
All of this brings us to what is perhaps the biggest change when developing for watchOS. Apps no longer need to have a companion app on the iPhone anymore. This gives developers the opportunity to focus 100% on creating worthwhile experiences for the Apple Watch in cases where the iPhone app counterpart wasn’t doing much to begin with, letting us developers better spend our time and resources.
This is what most of the users and developers where looking forward to, and in my opinion there are three big changes that iOS 13 brings to the table.
The first is developers having to deal with iOS’s “Dark Mode”.
Implementing “Dark Mode” isn’t as hard as it might seem, since the system will handle most of the work for apps that use the standard UI elements. The system also provides a way to set the required variants for colors and assets without having to write any code. Views can also be manually updated accordingly by taking advantage of the methods the system calls when a change in appearance is required.
The real challenge with “Dark Mode” is to actually design how your apps should look like. Apps that heavily use custom views might require some adjustments that developers will have to implement, still, I believe most of the work will have to be done by the designers.
The second big change is the introduction of SwiftUI. This one is particularly complicated as apps that require support for iOS 12 and earlier won’t be able to use it. Because of this, developers whose apps are meant to be used only on iOS 13, basically none at this moment, are the only ones who can take advantage of this new framework. To make things worse, even after iOS 13 is officially released, many developers will opt to create their apps in the traditional way as they will still want to support iOS 12 for a while.
Creating apps using SwiftUI does seem like a lot of fun, unfortunately some of us won’t be able to enjoy it for a while.
The third big change is actually a series of several smaller changes related to how Apple expects developers to handle the user’s privacy.
The most evident sign of this is the introduction of “Sign in with Apple”.
Sign in with Apple
From a user’s point of view, this is an extremely welcomed change. Not only does it simplify the login experience, but it also hides the user’s information from entities that shouldn’t be able to have access to it in the first place.
Developers on the other hand may have a bit of a hard time adjusting their apps to this new system. Apps that currently support third party login mechanisms (such as Facebook or Google) are required to implement this new feature. Which makes this particular addition somewhat of an implementation priority for them.
“Sign in with Apple” doesn’t provide a way to access some of the user’s information that was already available to developers, albeit with the user’s permission, through other “more social” 3rd party sign in methods. This will require some apps to completely re-design how they get this kind of information.
Another one of the changes related to privacy that developers will have to deal with is how users can now allow apps to get their location just once. This is a huge change for apps that rely on location information as this particular case is quite different from the “always” and the “while the app is running” approaches that we are currently used to deal with.
In addition, the system will now show the user a list of places in where our app requested any location information, meaning that we have to be a lot more careful in how we phrase the location request as well as how often we perform the query unless we want to end up with our app looking suspicious to the user.
This article only explores some of last week’s Keynote announced changes that I personally think will be the most complex to deal with, not because of the difficulty in their implementation, but because of the required paradigm shift in how we design and build apps from now on.
It’s important to mention that I purposely left out anything related to changes coming to the iPad, now having an OS of its own (iPadOS), since they are quite numerous and writing about them is worth an article of its own.
I hope this article gives some of the developers out there a glimpse of the things we will be dealing with in a couple of months, so that we can start thinking on how to tackle some of these changes way before they become actual issues.
The WWDC week just ended, so expect more tech related articles to be posted in Stories by Fenrir as we play around with all the new features!