How to Create Deeplinks for Android Using Branch.io?

Before starting with implementation, first we will see what is the deep link.

What Is A Deep Link?

Deep-link is like a URL containing context regarding a particular item; it drives the user to product pages. A deep link is an intent filter system that allows users to directly enter a specific page on the web or activity in an Android app.

In Android, this URL performs three actions as follows :

  • Open the user’s preferred app that can handle the URI
  • Open the only available app that can handle the URI
  • Allow the user to select an app from a dialog

Contextual_Deep_Link

On click of link it will check for preferred app, If preferred app is not present on our phone then it will redirect to user on play store or where we have saved our build of application for download.

Branch.Io Integration

Import branch SDK to you app level build.gradle file.

dependencies {
    // required for all Android apps
    implementation 'io.branch.sdk.android:library:5.+'
    // required if your app is in the Google Play Store (tip: avoid using bundled play services libs)
    implementation 'com.google.firebase:firebase-appindexing:19.0.0'
    implementation 'com.google.android.gms:play-services-ads-identifier:16+'
    // optional
    // Chrome Tab matching (enables 100% guaranteed matching based on cookies)
    implementation 'androidx.browser:browser:1.0.0'
    // Replace above with the line below if you do not support androidx
    // implementation 'com.android.support:customtabs:28.0.0'
}

On the Branch.io dashboard create your account,use link https://dashboard.branch.io/login. After the account was created, set up an account for android.

Branch.io dashboard

As we see on the dashboard in account settings, we will get branch Key and branch Secret, copy them, and add them into the Android string.xml file we need to add the keys into manifest.xml.

Manifest.Xml

<meta-data
          android:name="io.branch.sdk.TestMode"

           android:value="true" />
       <meta-data
           android:name="io.branch.sdk.BranchKey"
           android:value="key_live_your branch live key" />
       <meta-data
           android:name="io.branch.sdk.BranchKey.test"
          android:value="key_test_your branch test key" />

On Branch.io dashboard configure your Default settings.

android

As we see in the above image, we have two options to select I have an Android App and Enable App links; make sure both must be selected.

Add the Android URI Scheme; then, we have to select anyone in between Google Play Search or Custom URI. If your app is on play store, we can add the Url of the play store to your app. Otherwise, choose Custom URL And add the link package name of your app and link of your.apk where you have saved it for the download.

Android URI Scheme: It will be your app name.

Google Play Search: If your app is on play store add the Url.

Custom URL: If the app is not present on play store add the link where you have saved you .apk for the download.

SHA256 Cert Fingerprints: From project gradle we will get signingReport in that we will get SHA256 for our project.

In launcherActivity add the intent-filter in AndroidManifext.xml .

<meta-data
           android:name="io.branch.sdk.TestMode"
           android:value="true" />
       <meta-data
           android:name="io.branch.sdk.BranchKey"
           android:value="key_live_your branch live key" />
       <meta-data
           android:name="io.branch.sdk.BranchKey.test"
           android:value="key_test_your branch test key" />

First scheme is the name which we have registered on the dashboard as an Android scheme URI.

Load Branch

Create one Application class and load branch to your created Application class.

import io.branch.referral.Branch;
public class ApplicationClass extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // Branch logging for debugging
        Branch.enableLogging();
        // Branch object initialization
        Branch.getAutoInstance(this);
    }
}

Initialize Branch

After the loaded branch in the custom Application class, I need to initialize it. Branch initialization must be in your Launcher activity (i.e. Activity that contains intent filter of category, “android.intent.category.LAUNCHER” in AndroidManifext.xml).

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import org.json.JSONObject;
import io.branch.indexing.BranchUniversalObject;
import io.branch.referral.Branch;
import io.branch.referral.BranchError;
import io.branch.referral.util.LinkProperties;
public class LauncherActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_launcher);
}
@Override public void onStart() {
super.onStart();
Branch.sessionBuilder(this).withCallback(branchReferralInitListener).withData(getIntent() != null ? getIntent().getData() : null).init();
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
// if activity is in foreground (or in backstack but partially visible) launching the same
// activity will skip onStart, handle this case with reInitSession
Branch.sessionBuilder(this).withCallback(branchReferralInitListener).reInit();
}
private Branch.BranchReferralInitListener branchReferralInitListener = new Branch.BranchReferralInitListener() {
@Override
public void onInitFinished(JSONObject linkProperties, BranchError error) {
if(error==null){
Log.i("BranchDeepLink",""+linkProperties.toString());
try{
Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonElement json = parser.parse(linkProperties.toString());
ShareScreenDataModel shareScreenDataModel = gson.fromJson(json, ShareScreenDataModel.class);
}
};

Replace ShareScreenDataModel with your Data Model class and you will get data which is coming through a deep link.

Hope it will be helpful to you!!!

Hire Top Android Developers Inexpensively to Meet Your Unique Requirements

Priyanka

Android Developer

Priyanka is an android developer with around 3.5 years of experience developing Android applications with core functionality. She has in-depth knowledge of Java and React Native. Priyanka likes to learn new things and share.

The founder's survey report on "What Matters For Startup" is released - Get your copy and learn the trends of successful companies :)

Download Free eBook Now!

Get in touch for a detailed discussion.

Hear From Our 100+ Customers
coma

Mindbowser helped us build an awesome iOS app to bring balance to people’s lives.

author
ADDIE WOOTTEN
CEO, SMILINGMIND
coma

We had very close go live timeline and MindBowser team got us live a month before.

author
Shaz Khan
CEO, BuyNow WorldWide
coma

They were a very responsive team! Extremely easy to communicate and work with!

author
Kristen M.
Founder & CEO, TotTech
coma

We’ve had very little-to-no hiccups at all—it’s been a really pleasurable experience.

author
Chacko Thomas
Co-Founder, TEAM8s
coma

Mindbowser is one of the reasons that our app is successful. These guys have been a great team.

author
Dave Dubier
Founder & CEO, MangoMirror
coma

"Mindbowser was very helpful with explaining the development process and started quickly on the project."

author
Hieu Le
Executive Director of Product Development, Innovation Lab
coma

"The greatest benefit we got from Mindbowser is the expertise. Their team has developed apps in all different industries with all types of social proofs."

author
Alex Gobel
Co-Founder, Vesica
coma

Mindbowser is professional, efficient and thorough. 

author
MacKenzie R
Consultant at XPRIZE
coma

Very committed, they create beautiful apps and are very benevolent. They have brilliant Ideas.

author
Laurie Mastrogiani
Founder, S.T.A.R.S of Wellness
coma

MindBowser was great; they listened to us a lot and helped us hone in on the actual idea of the app.” “They had put together fantastic wireframes for us.

author
Bennet Gillogly
Co-Founder, Flat Earth
coma

"They're very tech-savvy, yet humble."

author
Uma Nidmarty
CEO, GS Advisorate, Inc.
coma

"Ayush was responsive and paired me with the best team member possible, to complete my complex vision and project. Could not be happier"

author
Katie Taylor
Founder, Child Life On Call
coma

“As a founder of a budding start up, it has been a great experience working with Mindbower Inc under Ayush's leadership for our online digital platform design and development activity."

author
Radhika Kotwal
Founder of Courtyardly
coma

The team from Mindbowser stayed on task, asked the right questions, and completed the required tasks in a timely fashion! Strong work team!

author
Michael Wright
Chief Executive Officer, SDOH2Health LLC
coma

They are focused, patient and; they are innovative. Please give them a shot if you are looking for someone to partner with, you can go along with Mindbowser.

author
David Cain
CEO, thirty2give