Before starting with implementation, first we will see what is the 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 :
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.
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.
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.
<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.
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.
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); } }
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!!!
How to Effectively Hire and Manage a Remote Team of Developers.
Download NowThe Mindbowser team's professionalism consistently impressed me. Their commitment to quality shone through in every aspect of the project. They truly went the extra mile, ensuring they understood our needs perfectly and were always willing to invest the time to...
CTO, New Day Therapeutics
I collaborated with Mindbowser for several years on a complex SaaS platform project. They took over a partially completed project and successfully transformed it into a fully functional and robust platform. Throughout the entire process, the quality of their work...
President, E.B. Carlson
Mindbowser and team are professional, talented and very responsive. They got us through a challenging situation with our IOT product successfully. They will be our go to dev team going forward.
Founder, Cascada
Amazing team to work with. Very responsive and very skilled in both front and backend engineering. Looking forward to our next project together.
Co-Founder, Emerge
The team is great to work with. Very professional, on task, and efficient.
Founder, PeriopMD
I can not express enough how pleased we are with the whole team. From the first call and meeting, they took our vision and ran with it. Communication was easy and everyone was flexible to our schedule. I’m excited to...
Founder, Seeke
Mindbowser has truly been foundational in my journey from concept to design and onto that final launch phase.
CEO, KickSnap
We had very close go live timeline and Mindbowser team got us live a month before.
CEO, BuyNow WorldWide
If you want a team of great developers, I recommend them for the next project.
Founder, Teach Reach
Mindbowser built both iOS and Android apps for Mindworks, that have stood the test of time. 5 years later they still function quite beautifully. Their team always met their objectives and I'm very happy with the end result. Thank you!
Founder, Mindworks
Mindbowser has delivered a much better quality product than our previous tech vendors. Our product is stable and passed Well Architected Framework Review from AWS.
CEO, PurpleAnt
I am happy to share that we got USD 10k in cloud credits courtesy of our friends at Mindbowser. Thank you Pravin and Ayush, this means a lot to us.
CTO, Shortlist
Mindbowser is one of the reasons that our app is successful. These guys have been a great team.
Founder & CEO, MangoMirror
Kudos for all your hard work and diligence on the Telehealth platform project. You made it possible.
CEO, ThriveHealth
Mindbowser helped us build an awesome iOS app to bring balance to people’s lives.
CEO, SMILINGMIND
They were a very responsive team! Extremely easy to communicate and work with!
Founder & CEO, TotTech
We’ve had very little-to-no hiccups at all—it’s been a really pleasurable experience.
Co-Founder, TEAM8s
Mindbowser was very helpful with explaining the development process and started quickly on the project.
Executive Director of Product Development, Innovation Lab
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.
Co-Founder, Vesica
Mindbowser is professional, efficient and thorough.
Consultant, XPRIZE
Very committed, they create beautiful apps and are very benevolent. They have brilliant Ideas.
Founder, S.T.A.R.S of Wellness
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.
Co-Founder, Flat Earth
Ayush was responsive and paired me with the best team member possible, to complete my complex vision and project. Could not be happier.
Founder, Child Life On Call
The team from Mindbowser stayed on task, asked the right questions, and completed the required tasks in a timely fashion! Strong work team!
CEO, SDOH2Health LLC
Mindbowser was easy to work with and hit the ground running, immediately feeling like part of our team.
CEO, Stealth Startup
Mindbowser was an excellent partner in developing my fitness app. They were patient, attentive, & understood my business needs. The end product exceeded my expectations. Thrilled to share it globally.
Owner, Phalanx
Mindbowser's expertise in tech, process & mobile development made them our choice for our app. The team was dedicated to the process & delivered high-quality features on time. They also gave valuable industry advice. Highly recommend them for app development...
Co-Founder, Fox&Fork