How to choose between the different mobile deeplinking solutions?

Mobile

React Native

bam

Universal link

applinks

apple-app-site-association

deep link

dynamic link

firebase dynamic link

Choose the suitable links implementation that fits your needs

I was recently in charge of implementing the deep linking to a client application. I was enthusiastic to take the subject since I had understood the need and I knew how to get to a solution. But things didn't happen as expected. The client changed the expectations several times and it turns out a simple feature to become a complex one.

The purpose of this article is to give some tips on how to choose the best mobile deep linking solution over the market that will fit your need.

 

Overview of deeplinks

Linking

Giving a way to people to reach a content in your app. Basically, "linking" refers to the use of a link that brings any user from the place they saw the link to the place they can read the content attached to this link in your app. This app can be web site or a mobile app or even a desktop app (not discussed in this article).

URL

Since we are talking about urls, here is the standard format for urls:

<protocole>://<<auth-data>@><domain><:port></path/><?query-params><#bookmark>

For instance:

http://Jojo:lApIn@www.exemple.com:8888/chemin/d/accès.php?q=req&q2=req2#signet

Links

In the mobile industry, we often refer to the following 4 types of URL:

1. Web Links

When dealing with web, a url link is usually an http link. This link can be opened by any browser from the market. Thanks to a link, you can navigate between the pages of a website. The http link is by nature one of the main components of the web technology.

An example of http link: https://blog.bam.tech/developer-news

2. Mobile Links (aka Deep links)

Http are not the only ones. There are also links such as ftp://, file:///, ssh:// based on the different internet protocols or some other like tel: or mailto: based on desktop or mobile applications. The idea is that each protocol will define its short name also known as the scheme.

This ability has been hijacked in the mobile industry to give to each application the possibility to create its own scheme. Knowing this scheme, the OS can redirect any related links to the targetted application. This is the origin of "mobile deeplinks".

A deeplink is a link to a specific content into your app. It uses the scheme you defined in your application configuration. Here is the default behavior on mobile:

Let's say, you have an application called BAM and you want to point to a content into the blog section.

For a web site, you would have something like **https://blog.bam.tech/posts/234/article-links.**

For a mobile app, you will have something like bamblog://posts/234/article-links.

bamblog is the scheme you defined for your application.

3. Hybrid (Web & Mobile) Links

Based on the success of deeplinks, the rise of mobile applications, the will to improve users experience and for some security reasons, a new concept emerged to replace deep links: Universal Links.

Introduced by Apple with iOS 9 (WWDC19), the idea is simple: how to guarantee that your users will always reach your content when your application is not installed on their mobile phone ?

To reach this goal, Apple gave to the apps developers the ability to use their website url as deeplink, making it possible to use one object for 2 goals:

  • From desktop, this link will redirect to the browser.
  • From mobile, this links will redirect to
    • your app, when installed
    • the browser, when not installed

Universal links also exist for Android 6+ and are knwon as App Links.

* in the schema, desktop also stands for mobile browser.

4. Smart Links

Universal links and deeplinks are really useful but are facing many limitations that can be frustrating. Let see these situations:

  • Deeplinks can be broken: Sometimes when the user follows your deeplink, if the app is not installed on its device, he will need to install it. But just after the installation, the app is opened but the link won't redirect the user to the right place. This problem is known as the broken deferred deeplinks.
  • Universal link will fallback on the browser: when the app is not installed, the link will redirect the user to the browser. And if you want to redirect to the App Store, the universal link won't be enough in this situation. In response to that issue, Apple highly suggests the use of a smart App Banner in your website that gives a path to the store.
  • Platform specific content: another common issue with deeplinks is to redirect the user to a specific content based on the place he came from. Let's say you have a unique link that leads to a content and the location of this content is not the same on your app than your web site. But for some marketing and SEO reasons you wouldn't use different links.
  • Specific webviews: you share your content link to a social network like Facebook and you expect the users to be redirected to your app since you configured it for: OOPS !! The links is broken and always redirect to the browser.

These kinds of situations reveals the purpose of smart links.

A smart link is a link that will give a better guaranty to bring the user to the right place in your application no matter if it's installed or not. You can directly use it as a universal link or use it to alias your own link.

For instance, let's say I have a universal link: http://my-organisation.com/my-specific-content which is not working everywhere. To make it work everywhere, I will replace it with the smart link: http://my-smart-link-solution.com/my-specific-content

Here is a naive explanation of how it works:

Many solutions exist in the market:

  • Google came with the Firebase dynamic link giving a great flexibility to the developers. You can for instance define a specific link that will be used on desktop.
  • Facebook brought its own solution Facebook App Link. If you are trying to campaigns over Facebook, Messenger or Instagram, you may be interested.
  • There are many other solutions. I can think of Branch, Adjust,... If you have more to recommend, please tell me in the comments!

Just be aware of data tracking. Using smart links, you give the ability to these services to capture analytics and tracking data. Think to disable capture of analytics if you are not using this feature.

 

The kind of problems you could face

The problem which leads me to this article is that we have successively implemented Deeplinks and Universal links before falling back on the firebase dynamic links. That generated rework for both developers and product owner teams. That also generated some frustration when some links was broken because some update was not properly anounced and Product owner got their deep link broken. In a better world, we would like to choose the appropriate solution before implementing nor installing anything.

Maybe you encountered a similar issue and you are wondering how you could have overcome it. Let's it see together.

Here was the scenario:

Step 1

  • Product owner [PO] → Devs: Hey guys ! When a new user subscribes, we would like to redirect him to the app when he clicks on the link received by email
  • Me: Oh! That's really easy. We can do that. Is that the only need ?
  • PO: Yes! that's all !
  • Me Devs: Let implement Deep Links !

Step 2

  • PO: Oh no! it's not working ! when I click onto my email, nothing happens
  • Backend: Actually, we just found out our email partner solution breaks the deeplinks down and make them not clickable
  • Me: 🤬 ! OK ! Let implement Universal Links !

Step 3

  • PO: Argh, it's broken once again ! If I click on the link from Facebook, I'm redirected the 404 page that tells me the link is not supported. I should be redirected to the app if it's installed.
  • Me: What ?!
  • PO: We are planing a social network campaign and we want some links to redirect to the app. We are targeting Facebook, Instagram, Twitter and Snapchat.
  • Me: After some investigations, it turns out that Facebook alters links which breaks them and make them redirect automatically to the browser. Ok ! Let call Big brother. Let implement firebase dynamic links !

That story reveals more issues than the only choice of the right implementation. For instance, the fact that we didn't challenge the PO need enough. We didn't try to cover the right feature that actually was "Linking to the app from everywhere", not just from emails. Taking time to ask the right questions would have helped us to understand the real need and we would be able to challenge them knowing the current constraints.

So, what is the best way to focus on the things that matters to have a good cover of the need.

Understand the need

Before asking which of deeplink or universal link or another link will fit your need, take care of being certain of the real need. You can achieve it by

  • A. exploring the exhaustive ways your links will be shared

For instance, is it common for your users to share links that pointes to a content in your app ? It will be if you expose a share button for instance. Is an operator of your Marketing service able to share links somewhere on the net that leads to a content of your app? Can your servers deliver content that points to a specific content of your app?

  • B. exploring the exhaustive ways your links will/should be received

For instance, which app could open your app links? We can say that is OK if your SMS application breaks down url to make them not clickable. Actually, less and less people use to use SMS to share content. But is it the same if the email view breaks them down? or is it acceptable if the link redirects to the browser and not to the app? What about other apps like Slack/Teams/WhatsApp/...? and what about some applications that behave differently following the OS...?

The picture below represents the ways your links are shared and received. Doing the same diagram for your app will help to clarify the need.

To clarify the above diagram let's take some examples to see the minimal solution that can be implemented:

A. a simple Meditation App with personal data

  • the server only sends emails after subscription or after password resetting
    • links into these emails open app into a specific page to finish the related process
    • there is no other links that could be shared that redirects to the app content
  • the email carier service does not rewrite url for security purpose or any other reasons
  • there is no website being able to open these links on the browser. A 404 is standing there OR a redirection to the store is implemented
    • ⇒ Deeplink can be used (discouraged by iOS)

B. a simple Meditation App with personal data with a web version

  • we take the same app with a web version
    • ⇒ Universal link can be used

C. a simple Meditation App with personal data with a web version

  • we add a blog section were users can have articles about stress management
    • now, each post on the blog can have its own url
    • ⇒ Universal link can be used
  • we add some pages only available from the desktop
  • the community that uses the app is really big and we don't want any broken links
    • ⇒ smart link can be used

To finish, it's also important to respond to the questions that reflect your business logic: should my link be the same for desktop and mobile environments? Or, do I need a reporting about the usage of my links ? ... Since the answers will help you to decide, here is a little BPMN to help you start.

My toughts

After being worked on app links, I came to the conclusion that the smartest your link, the most

  • you increase your retention rate. No matter where the link is clicked, the user is redirected to your app
  • you reduce frustration of broken links
  • you increase the user experience by building custom workflows that leads the user to the app or any other web content

As you can see, choosing a type of link is not easy. It's really important to assess your needs before to start coding ...

So, don't waste your time anymore and choose the right link! But do not forget that some of them come with a price.

 

Sources

https://fr.wikipedia.org/wiki/Uniform_Resource_Locator

https://en.wikipedia.org/wiki/Mobile_deep_linking

https://developer.apple.com/videos/play/wwdc2019/717/

https://developer.android.com/training/app-links

https://developer.apple.com/documentation/webkit/promoting_apps_with_smart_app_banners

https://firebase.google.com/docs/dynamic-links

https://developers.facebook.com/docs/applinks/?locale=fr_FR

https://branch.io/fr/

https://www.adjust.com/glossary/deep-linking/