In this blog, I am going to explain how to, without considerable effort, add Universal link and Deep linking capabilities to an iOS app
We are going to cover this in 3 sections
- Understanding deep link, URL scheme, and Universal link
- The issues with a universal link and the difficulty in incorporating it
- A nice workaround to get rid of the complexity of universal links.
If you are aware of the universal link and the challenges in having it up and running, feel free to jump to the 3rd section straight away.
Understanding deep link, URL scheme, and Universal link
– As opposed to a common belief, a URL scheme is not the same as a deep link.
Then what exactly is a deep link?
Well, the term “deep link” is the route to a specific spot on a website or a native app. So, for a mobile app, “deep link” is a link that contains all the information required to navigate the user deep into a section of the app instead of just launching the app.
What is a URL scheme and how it works?
A URL scheme can be treated as a specially designed URL just to open a particular app.
For instance, any iOS app can open WhatsApp with “WhatsApp://” URI using the URL scheme. This is possible because WhatsApp has registered itself with the app store with “WhatsApp” as a URL scheme.
However, to send a “Hello” to a particular number in Whatsapp, the URI needs to be like “WhatsApp://send?phone=(actual phone number)&text=Hello”. This, in turn, will open chat for the given number with the supplied text pre-filled. This is an example of a deep link in action.
So, what exactly is a Universal link? and why at all so we need it?
The URL scheme works just fine as long as the app is installed on the user’s phone. In the above example for instance, if WhatsApp is not available, then “whatsapp://” URI will just not work and so as the deep link to send a message to a user.
In this case, a nice solution would have been to
- Send the user to the website on the mobile browser, then, either redirect to the app, if available or show a prompt to download it from the app store if not.
- A more elegant way is to directly open the app, if available on phone, without redirecting through the website or in case the app is not installed, open the website with a prompt to get it downloaded from the store. This is exactly how the universal link works.
The same universal link can be used to open the Android app as well.
The issues with Universal link and the difficulty in incorporating it.
Is Universal link difficult to incorporate?
The elegance and ease that universal link provides to your users come at the cost of having to deal with the complexity of implementing it.
Implementation of a universal link requires a guided approach. If you want to learn about the process in details, click here.
Unfortunately, there are a whole bunch of issues and bugs you will encounter after implementing it. As it deals with iOS, Android and the Web, there needs to be a great deal of coordination and support between them all.
Even for iOS itself, there are multiple ways and factors which are likely to affect how a user interacts with the link. Measures have to be taken to address them. To name a few, you are going to need to support previous versions of iOS, it should be possible for the link to open in SafariViewController for some apps like Skype and Facebook, the user may get redirected to the link instead of reaching there by clicking it, there may be a tracking need on the link. Given the default behavior of the universal link, which is to either open the app, if available or the web if not, it is going to break at some point for one of the above cases.
Unless you are hell-bent on having the universal link with all its properties and willing to put all the resources and time it needs to address the accompanying issues, you should consider the alternate, and the more basic solution available, to get the task done.
So, what is the hidden solution that can be used as a workaround?
The idea here is that the web URL, the actual HTTP link of the website, will work as a universal link.
For Android, it’s easier to connect an HTTP link to the app, with the assumption that the user will be taken to your app on tapping the link if it’s available or fallback to the website if not. At most, you will need to verify the domain ownership. More on this is available here.
For iOS, unfortunately, you can’t use an HTTP link i.e. link to a real website to open the app without using Universal link.
Smart Banners in iOS is the workaround we have been looking for.
Safari has a “Smart App Banner” feature to promote app from the website. Your website can include a meta tag containing the app id of the app, and the Safari mobile browser will show a smart banner. On being tapped, it will open the app if it’s installed or take the user to the app store if the app is not there in the phone.
Here is how smart banner looks for the LinkedIn website.
When the app is not installed on the phone.
When the app is installed
The meta tag format is :
<meta name=”apple-itunes-app” content=”app-id=myAppStoreID, affiliate-data=myAffiliateData, app-argument=myURL”>
Both “affiliate-data” and “app-argument” are optional.
For more information on adding a smart banner to your app, click here.
The views and opinions expressed in this article are those of the author.
To know more about our company, please click on Mindfire Solutions.