What are URI schemes?
A Uniform Resource Identifier (URI) is a string that identifies a resource without ambiguity. From a semantic point of view, a URI follows the same format as URL. But the key difference is that a URI is just used as an identifier, and is not necessarily intended to locate a resource like in a URL.
How are URIs different from URLs?
If you want to start a riot in a room full of engineers, you could have a debate about tabs vs. spaces for code indentation. Or you could mix up the difference between “URI and URL.” Essays have been written about this, but for our purposes just remember that all URLs are also URIs. The important part is the piece at the beginning: the “scheme”. You’re already familiar with the https:// and https://schemes. You may even have encountered ftp:// or feed://. All of these indicate the type of content being requested, and your mobile app can register its own custom URI scheme. For example, myapp://.
If you are researching deep links, you probably have come across significant content about URI schemes. Facebook is such a case, where URI schemes are the main way you can deep link from a retargeting campaign into an app. Throughout much of the history of app development, URI schemes were the primary method of deep linking into apps on both iOS and Android.
The Limitations of URI Schemes
Unfortunately, there are significant drawbacks to custom URI schemes, most notably the inability to easily handle these two situations:
- When the app isn’t installed.
- When more than one app tries to claim myapp://.
Are URL/URI Schemes Obsolete?
According to Apple, yes. Starting from iOS 9.2, Apple no longer officially supports URI schemes for deep linking, and developers were forced to implement Universal Links in order to get equivalent functionality on iOS.
In reality, not yet. Universal Links are great when they work, but there are still plenty of places where you need to use URI schemes as a backup and you are leaving a significant amount of traffic on the table if you rely on them exclusively. The Android ecosystem is far too fragmented to even consider abandoning URI schemes at any point in the near future.