A Deep Linking Chronology | AppsFlyer
37Shares

Chapter 4

A Deep Linking Chronology

Things weren’t always so complex. Before there were Apple Universal Links, and Android App Links, and Chrome Intents, there was just plain vanilla URI Schemes and Fingerprinting.

In order to understand why things are so complex today, it’s important to understand how Attribution & Deep Linking first worked, and how that has evolved to today.

Original Deep Linking – How it Worked

Originally, there were just links, fingerprints, and URI schemes. When AppsFlyer as a 3rd Party Attribution Provider pioneered the technology, the process was simple to attribute and deep link a user.

  1. User would click an attribution link. Those links looked and worked much like today.
  2. The user would be redirected to a page where javascript would load and capture a fingerprint of the user.
  3. In that brief moment, the browser would know the operating system, it would have the platform configuration including the URI scheme and route, and so Javascript would set a timer and then try to fire the URI scheme and route.
  4. If the timer expired before the browser responded, then it was known that the user did not download the app, and so the browser would redirect to the appropriate app store tied to that Operating System.
  5. Just like with regular Attribution, the user would install and open the app – the fingerprint would be matched and then this information would be passed in the callback to the app.
  6. If the user has the app, then the URI would have opened the app immediately, and when the URI was opened, the Attribution provider would also pass a clickId or linkId so that it’s SDK knew exactly where the user came from.

This was a simple and clear way to deep link and was leveraged by all the major 3rd Party Attribution and deep link services.

What Changed?

Everything changed in 2015 when Apple introduced Apple Universal Links as part of iOS 9.3. In this version of the Apple iOS they introduced two things:

  1. The new standard for routing to apps, called Universal Links.
  2. A new Safari change that got rid of non-blocking javascript, and therefore eliminating the ability on iOS to route as described in the previous section – the timer and javascript routing mechanism no longer worked on iOS.

The old world was dead forever after iOS 9.3 was released. From this point in time, the ability to attribute and deep link only became more complex as operating systems and media vendors released their own standards including Chrome Intents, Android App Links, Facebook App Links, and more.

Today, deep linking is highly segmented and very much depends on the operating system, the mechanism being used, as well as the browser or app context. This table below outlines the expectations for most well known deep linking contexts:

App

iOS

Android

Facebook Newsfeed

deep links to af_web_dp or af_ios_url fallback.

deep links to app.

Facebook Browser

deep links to app.

deep links to app.

Facebook Messenger

deep links to af_web_dp or af_ios_url fallback.

deep links to app.

Facebook Messenger browser

deep links to app.

deep links to app.

Instagram Profile

deep links to af_web_dp or af_ios_url fallback.

deep links to app.

Instagram Browser

deep links to app.

deep links to app.

Instagram Stories

deep links to af_web_dp or af_ios_url fallback.

deep links to app.

Twitter Feed

deep links to af_web_dp or af_ios_url fallback.

deep links to app.

Twitter Browser

deep links to app.

deep links to app.

Reddit

deep links to af_web_dp or af_ios_url fallback.

deep links to af_web_dp or af_android_url fallback.

Pinterest

deep links to af_web_dp or af_ios_url fallback.

deep links to af_web_dp or af_android_url fallback.

Pinterest Browser

deep links to app.

deep links to app.

Chrome Browser

deep links to app.

deep links to app.

Chrome Address Bar

deep links to af_web_dp or af_ios_url fallback.

deep links to af_web_dp or af_android_url fallback.

Safari Browser

deep links to app.

N/A

Safari Address Bar

deep links to af_web_dp or af_ios_url fallback.

N/A

Firefox Browser

deep links to af_web_dp or af_ios_url fallback.

deep links to app.

Firefox Address Bar

deep links to af_web_dp or af_ios_url fallback.

deep links to app.

UC Browser

deep links to af_web_dp or af_ios_url fallback.

deep links to app.

Naver Browser

deep links to af_web_dp or af_ios_url fallback.

deep links to app.

Kakao Browser

deep links to af_web_dp or af_ios_url fallback.

deep links to app.

Opera Browser

deep links to app.

deep links to app.

Apple iMessage

deep links to app.

N/A

Apple Business Chat

deep links to app.

N/A

Slack

deep links to app.

deep links to app.

WeChat

deep links to af_web_dp or af_ios_url fallback.

deep links to af_web_dp or af_android_url fallback.

WhatsApp

deep links to app.

deep links to app.

Gmail

deep links to app.

deep links to app.

About the Authors