iOS 9 Bringing Changes to URL Schemes

Agile Tortoise’s Greg Pierce has an explanation of the changes coming to iOS 9 for apps that want to launch URL schemes:

There are two URL-related methods available to apps on iOS that are effected: canOpenURL and openURL. These are not new methods and the methods themselves are not changing. As you might expect from the names, “canOpenURL” returns a yes or no answer after checking if there is any apps installed on the device that know how to handle a given URL. “openURL” is used to actually launch the URL, which will typically leave the app and open the URL in another app.

Up until iOS 9, apps have been able to call these methods on any arbitrary URLs. Starting on iOS 9, apps will have to declare what URL schemes they would like to be able to check for and open in the configuration files of the app as it is submitted to Apple. This is essentially a whitelist that can only be changed or added to by submitting an update to Apple. It appears that certain common URLs handled by system apps, like “http”, “https”, do not need to be explicitly whitelisted.

In short, Apple wants to prevent apps from being able to scan a user’s device and know which apps are installed. Notably, this change comes a few months after Twitter started scanning user devices to see installed apps and deliver “a more personal Twitter experience”.

As Greg notes, Apple is doing this to protect customers’ privacy. Companies like Twitter had found a loophole to gather data about user devices that iOS doesn’t normally expose, and it makes sense for Apple to prevent this from happening in the future. The problem is that this system based on whitelists and limited number of URLs could be a serious threat to automation apps like Launch Center Pro and Launcher, which depend on launching any URL.

Since last year, various iOS teams have made an effort to obviate the need for URL schemes through extensions. This year, they’re going one step further. I agree with the underlying privacy concerns and I also believe that more developers should embrace extensions – how ironic that Twitter still doesn’t support them and they’re likely causing this change – but it’s important to note that some automation apps are based on the idea of launching URLs, not showing share sheets for extensions.

As Greg notes, there’s some confusion in this first beta of iOS 9. Hopefully Apple and developers will be able to work out a decent compromise by the final release.