Deep Linking is typically used to link to content. It is used all over the web to link to sites and products online. They can also be used to share content, whether it be an achievement in an app or sharing a social media post. They are also useful in regards to sharing since they contain metadata and provide useful analytics for tracking where the user navigates. However there is a problem with linking when it comes to mobile. Web links can easily link to content online by providing a URL to the content, but what if developers wanted to link to an app? Apps are not accessible via URL without Deep Links so http://www.<yourapp>.com won’t open your app.
The Difference Between a Normal Link and a Deep Link
Deep links differ from normal links because they link through two levels. If the user clicks on a Deep Link on a mobile device and the user has the app installed, then the link will open the app directly. However if the user clicks on the Deep Link and the app is not installed, then the link takes the user to the app store to prompt them to install the app. Once the user installs the app, the app opens from the same link, with all the metadata still available to parse in the app.
Here is a visualization of the process
Therefore the user will be brought to your app whether they have it installed or not.
Custom Scheme URI
It is possible to define a scheme that your app supports. Think of a scheme like a http url. The way that the web is able to understand what protocol to use in a web link is by looking at the beginning of a URL. For example, the link http://google.com, has “http://” in the beginning so the browser knows how to visit the site. However when it comes to mobile, it is not possible to open an app with an “http://” link, so developers create their own schemes associated with their apps. If my app is called “myApp”, then I can define a scheme such as “myApp://” and associate that with my app, so any link with that scheme in the beginning will open my app directly. This is how Deep Links are able to open your app. They first start as a normal “http://” link then that link checks whether the “myApp://” scheme will open the app. If it cannot open the app, then the app is not installed so the user is brought to the App Store and prompted to install the app (This will only work if the Deep Link has information about your app in the App Store).
Deep Link Analytics
The biggest benefit from Deep Links however is the fact that the links carry metadata with them through the entire process. For example, if the user clicked on the app link from Facebook, the deep link will carry the information that the app was opened from Facebook. This gives good analytical data about where people are mostly discovering your app to make decisions about where to better market your app. Another benefit to Deep Links is that they allow developers to push their own metadata into the link. For example, the link can have user ids, app specific information, and share data. If the user is sharing a social media post, the deep link can contain all of the information for the post like the title, content, image urls, etc. This is very useful because all the information is wrapped in a single URL.
Deep Linking Services
There are a few different services that make deep linking easy to use in your own apps
Branch IO
My favorite is Branch IO. Branch IO is a free service used by many popular apps such as Airbnb, Slack, Pinterest, etc. It provides useful data analytics and visualizations for the Deep Links for your app. It also makes it really easy to parse the Metadata from a Deep Link in your app with the Branch SDK.
Firebase Dynamic Links
Firebase also has a deep linking service called Dynamic Links. Although the Firebase service isn’t as powerful as the Branch IO system, it is very simple to set up if you have already integrated your app into the Firebase ecosystem.
January 9, 2017
Thanks, good article!
Do you can write about creation deep link in branch.io with using SDK or API ?
It will be great.
January 13, 2017
Thanks! Branch.io has great documentation on their site for how to use their SDK on different platforms!
Check it out!
https://developer.branch.io/
Let me know if that helps or if you have any questions!