Deep Linking Integration For Mobile Apps with Branch.io

Share Post:

Deep links allow developers to send users directly to an app rather than a website or store. By creating a seamless transition, they improve user experience and increase conversion rates. In this blog we’ll define the types of deep links, the most common uses for them, and a technical guide to implementing them from Five Pack’s years of experience in the mobile app industry. 

Types of Deep Links

Technically there are two types of deep links. First, there are ‘Deep Links’, and secondly, there are ‘Deferred Deep Links’. When properly integrated, you don’t need to be too concerned with the difference, but I’ll provide a short description of each.  

A deep link is utilized to send someone to a specific section within your app without the user having to manually tap their way to your desired landing page.  

A deferred deep link is basically the same thing, except the app is not required to be installed first. In the case of a deferred deep link, when a user clicks on your specific URI (uniform resource identifier), if they do not have your app installed, it will take them to the respective location to download your app, whether that’s Apple’s App Store or Google Play (assuming your app is available on both the iOS and Android platforms).


The Purpose of Deep Links

A quick Google search regarding the common uses for deep linking provides us with these top 10 use cases:

  1. App-to-app linking
  2. Mobile web-to-app linking
  3. Desktop-to-app linking
  4. SMS-to-app linking
  5. Deferred deep linking
  6. Campaign tracking
  7. In-app content sharing and personalized onboarding
  8. In-app content for paid ads
  9. Push re-engagement
  10. Email re-engagement

In their simplest form, we can think of deep links addressing the following:

  • Where does the user want to go?
  • Where was the link clicked from?
  • What was the link they clicked on? 

We have several options for custom data points. Additionally, we can use query parameters to further customize the deep linking experience. A query parameter is part of the URI that can be used to determine some action that should be performed.  

For example, if you go to https://amazon.com, you will land on their generic page. However, if you add a query parameter like https://www.amazon.com/s?k=phone, you will land on a page offering various phones. For your app, you may want a visitor to land on a specific product or offering.


A Step-by-Step Guide to Deep Linking

Now that we have a broad understanding of deep linking, here is a guide on how to integrate Branch.io into your app to handle your deep linking needs.

At Five Pack, we’ve utilized deep linking in various mobile apps we’ve developed, and our team has extensive knowledge of integrating Branch.io into both iOS and Android mobile apps.

While the process is a little more involved than the steps below will entail, this is a general step-by-step guide to deep linking, including a few ‘gotchas’ we’ve learned along the way.

  1. Open a Branch.io account. Within Branch.io, you can set up quick links, journeys, etc., allowing you to accomplish whatever you’re trying to with deep links.  
  1. In Branch.io, in the configuration section, configure your live and test environments. You will need to have your app in the App Store or Google Play. You do not have to have your app live and available to the public yet. Having the app available in one or both of the stores will provide some details you will need to set up the configuration.
  1. In Branch.io, go to account settings and find your branch key (you will need both the live and test keys).
  1. Add branch support to your app. In the Branch.io help, you can find the steps needed for iOS, Android, and Flutter. With Flutter, you can create both iOS and Android apps from the same code base, reducing development time and cost. 
  1. For Android, configure your AndroidManifest.xml

 

In the <Activity> section, add something like (you will find the default link domain information in the configuration section of Branch.io):

<intent-filter android:autoVerify=”true”>

    <action android:name=”android.intent.action.VIEW” />

    <category android:name=”android.intent.category.DEFAULT” />

    <category android:name=”android.intent.category.BROWSABLE” />

    <data android:scheme=”https” android:host=”DefaultLinkDomain.app.link” />

    <data android:scheme=”https” android:host=”DefaultLinkDomain-alternate.app.link” />

</intent-filter>

Now, in the same AndroidManifest.xml file, add these lines inside the <Application>:

<meta-data android:name=”io.branch.sdk.BranchKey” android:value=”key_live_xxxxxxxxxxxxx” />

<meta-data android:name=”io.branch.sdk.BranchKey.test” android:value=”key_test_xxxxxxxxxxxx” />

<meta-data android:name=”io.branch.sdk.TestMode” android:value=”false” />

Replace the key_live_xxxxxx with your branch key, which can be found in Account Settings.

Make sure the Android URI Scheme in the Branch.io Configuration screen matches your android:label :

Example:  If your android:label is:  “myApp”

Enter the following for the Android URI Scheme (yes, the :// is important):  myApp://

  1. For iOS, configure your info.plist for Branch.io as follows:

The same rules apply to the iOS URI Scheme as mentioned for Android above.

Add the following keys (same info applies to iOS as referenced in Android above).  NOTE:  One thing that is different for iOS is that the “applinks:” in front of the default link domain is required.  Meaning if your default link domain is abcdefg.app.link you would use:  applinks:abcdefg.app.link 

<key>branch_key</key>

<dict>

<key>live</key>

<string>key_live_xxxxxxxxxxx</string>

<key>test</key>

<string>key_test_xxxxxxxxxxxx</string>

</dict>

<key>branch_universal_link_domains</key>

<array>

<string>applinks:DefaultLinkDomain.app.link</string>

<string>applinks:DefaultLinkDomain-alternate.app.link</string>

</array>

Lastly, for iOS, in Xcode, enter the default domains to match these, including the applinks: part.


A Development Partner You Can Trust

Five Pack is the perfect choice if you’re looking for an experienced mobile development team to build your app or augment your staff. With end-to-end capabilities, our onshore team has the expertise you need to create an innovative solution that drives results. Let’s get started.

Let's Solve
Problem(s)
Together.

"*" indicates required fields

 

This field is for validation purposes and should be left unchanged.

Let's Solve
Problem(s)
Together.

"*" indicates required fields

 

This field is for validation purposes and should be left unchanged.

Stay Connected

More Updates