Facebook iconSuper easy mobile deep links with Branch.io
Blogs/Technology

Super easy mobile deep links with Branch.io

Nov 4, 20245 Min Read
Written by Murtuza Kutub
Super easy mobile deep links with Branch.io Hero

So, here’s the scenario: Your shiny new app needs to have deep links to guide a user to the exact content, when shared through your messaging app of choice (e.g. Slack, WhatsApp, iMessage, etc.)

Let’s say I’m discussing this very post with a friend. How would I direct this person to the correct blog post? One way is for them to user their search engine of choice (*cough* Google *cough*) and lookup “Medium.com + Kishore Babu + deep links Branch.io”. Now that may work (It hasn’t yet — I continue to pray to the SEO gods). Another way, is for me to simply share the URL for this post with them.

How would that work on a smartphone though? Since it’s a web URL (https://…) I would expect Chrome on Android, or Safari on iOS to open the web version of this post.

But if the Medium app on Android or iOS is setup well, it would pickup this URL and show this exact blog post on the app by picking up the deep link.

This is similar to how I can open a product on the Amazon app when clicking on a shared product URL. Kinda cool, right ?

What if the app is not installed, and I do not wish to show a web page corresponding to the URL? I expect the user to be redirected to the Google Play Store on Android, or the App Store on iOS. To implement this, there’s a non-trivial amount of work involved in the website part of your product.

I don’t have a website — or I don’t want to spend effort on the website for this

I hear ya. Nor do I. Allow me to introduce [Branch.io](https://branch.io/).

With Branch.io, We can implement mobile deep links without too much involvement from the web team.

Let’s build a sample app to demonstrate. (The sample app is made in Kotlin)

These steps aren’t important right now if you’re creating a simple app, Let’s skip ahead to the dashboard by clicking on “Finish Later”.

Next we see the dashboard for Branch.io. (Fig 2.)

Let’s go ahead and give our app a name. Go to the account settings page, (Fig 3.) and enter an App Name. You’ll also see the Branch Key and Branch Secret. You’ll need the Branch Key in the Android App Manifest.

Go to the link settings page on the dashboard (Fig 4.). Make sure the “Always try to open app” checkbox is checked.

Below, in the Android section, fill the desired Android URI scheme. This needs to be unique — so that the OS can inform your app of the intent. If this is not unique across app, you’ll see an app chooser pop up when these intents are fired by Branch.io.

I don’t intend to publish this sample app to the Google Play Store, so I’ll fill in a custom url instead. This would likely be the web homepage for your app.

Starting from API 23 (Marshmallow), Android has app links. These skip the browser for handoff to the app, and try to launch the app directly. So let’s go ahead and try that.

We’ll also need the SHA256 of our signing keystore — whether debug or release.

Go ahead and locate your keystore path and execute the following command from the terminal.

Branch ios url
Sample branch app name
Branch dashboard
Branch setup
keytool -list -v -keystore absolute/path/to/debug.keystore

Copy the SHA256 from the output, and paste it in the SHA256 Cert Fingerprints section (Fig 5.)

Cert Fingerprint

Finally, add a default URL, and choose a Link Domain

Android redirect url
Sample branch dashboard

That’s a lot of setup — When do I write some sweeeeet sweeeeet code?

Clone the sample repo. Let me walk you through the various parts.

The AndroidManifest.xml is the most interesting part here.

It has the Branch Key we saw earlier added as meta-data. The MainActivity.kt has intent filters for our URI scheme of “samplebranch://” and the link domains of “samplebranch.app.link”, etc. Also included is a broadcast receiver for Install Listener from the Google Play Store. This serves a pretty neat purpose — your deep links will work across app download and install from the Google Play Store. Pretty neat right?!

Next, we initialise the Branch instance in SampleBranchApplication.kt — which is our custom Application class.

Moving on to the MainActivity.kt, we add listeners on OnStart and OnNewIntent to pick up the data from Branch once we receive the deeplink intent.

Our custom parameters, “content_id” which we added while creating the deeplink, shows up as part of a JSONObject metadata of BranchUniversalObject. That’s how one would read custom parameters off of BranchUniversalObject.

Reading aside, Let’s see how to create a deep link.

We would build an instance of BranchUniversalObject by adding our custom parameters as ContentMetaData, and provide other fields as ContentImageUrl, ContentTitle, ContentDescription. These fields are shown when the deep link is shared, and a preview is shown for the link

sample deep link preview
Sample deep link preview

Once we click on this deep link, we see an app chooser menu.

deep link preview

Pick the SampleBranch app, Once we open it…

Sample branch

… and Voila! Our deep link works.

Phew! There’s no reason to avoid having deep links in your apps now!

Go ahead and give Branch.io a try today.

If you found this helpful, please hit the “Like” button, and share far and wide for more people to find.

I look forward to reading your feedback in the comments, and on Twitter (find me @KishoreBabuIN). Cheers!

Partner with Us for Success

Experience seamless collaboration and exceptional results.

Partner with Us for Success

Experience seamless collaboration and exceptional results.

Author-Murtuza Kutub
Murtuza Kutub

A product development and growth expert, helping founders and startups build and grow their products at lightning speed with a track record of success. Apart from work, I love to network & Travel.

Phone

Next for you

What Is An Event Loop In Javascript: A Beginner Guide Cover

Technology

Feb 5, 20255 min read

What Is An Event Loop In Javascript: A Beginner Guide

JavaScript is a single-threaded, non-blocking, asynchronous programming language. It achieves this functionality through the Event Loop, which is the heart of JavaScript's concurrency model. Understanding the Event Loop is essential for writing efficient and responsive JavaScript applications. Javascript performs a synchronous task by virtue of ‘delegation’. This simply means that whenever the JS engine sees an asynchronous task, it delegates it to the browser, all while executing synchronous co

What is Kusho.ai and How to Use It in 8 Steps? Cover

Technology

Feb 4, 20254 min read

What is Kusho.ai and How to Use It in 8 Steps?

Tired of spending countless hours manually testing APIs? Struggling with bugs that slip into production? Building and maintaining reliable APIs shouldn't be a nightmare. That's where Kusho.ai comes in, an intelligent API testing tool designed to streamline your workflow, catch bugs before they break production, and ensure seamless integrations.  Whether you're a developer pushing new features or a QA engineer ensuring system stability, Kusho.ai's powerful automation, real-time debugging, and AI

GraphQL vs Rest APIS (Key Differences) 2025 Cover

Technology

Jan 31, 20259 min read

GraphQL vs Rest APIS (Key Differences) 2025

Choosing between GraphQL and REST API can be challenging for developers building web applications. Both approaches offer distinct ways to structure your API, each with its own strengths and trade-offs. The right choice can significantly impact your project's success, particularly regarding data efficiency and scalability. When building applications, developers often encounter issues with data retrieval, flexibility, and performance. These challenges become more apparent as applications grow in