So, you’ve built your app and are looking for ways to improve the user experience. What about adding deep links? If you are interested in deep linking, you will quickly run into two important terms: App Links, and Universal Links. While we’ve previously covered Universal Links, this article will focus on App Links and how you can utilize their capabilities in your own app.
What are App Links?
In the mobile deep linking world, the term “App Links” can refer to either Android App Links or Facebook App Links. These are completely different concepts, so let’s look at what both of these are in detail:
Android App Links:
Android App Links are only available on Android Marshmallow (6.0) and upwards. They are HTTP URLs that can be used to link to content inside a native app if it is installed on the device.
For example, you have the URL https://example.com/product/red-shoes and the same content is also available on your native app. If the user clicks this link on an Android device and App Links are properly configured, the link will open the content on the native app if it’s installed, but would otherwise open the URL in the browser. This is a great experience for your user who has already invested in downloading the app and deserves a better native experience.
Android App Links are essentially identical to Universal Links on iOS, and have the same two major limitations:
- You must have a functional mobile website to fall back gracefully if the user does not have the app
- There are no built-in deferred deep linking capabilities.
To get started with Android App Links, you need to set up intent filters, add code to handle the incoming URLs, and make an association between your website and your app. Here is a great guide on how to set up Android App Links.
Also, keep in mind that you cannot depend completely on Android App Links for deep linking, especially if you support Android versions below 6.0. You’ll also need to implement URI schemes and Chrome Intents.
Facebook App Links:
First things first, Facebook App Links are not actually links. They are HTML meta tags on your web page, which the native Facebook clients scrape when a link to that page is shared. If the App Links meta tags are correctly configured, the behavior will be as follows:
- Open the app directly if it is installed on the device.
- Open the mobile website or the App/Play Store if app is not installed.
Here is an example of a page with Facebook App Links meta tags:
<html prefix="og: https://ogp.me/ns#"> <head> <title>The Rock (1996)</title> <meta property="og:title" content="The Rock" /> <meta property="og:image" content="https://ia.media-imdb.com/images/rock.jpg" /> <meta property="al:ios:app_store_id" content="342792525" /> <meta property="al:ios:url" content="imdb://title/tt0117500" /> <meta property="al:ios:app_name" content="IMDb Movies & TV" /> <meta property="al:android:package" content="com.imdb.mobile" /> <meta property="al:android:url" content="imdb://title/tt0117500" /> <meta property="al:android:app_name" content="IMDb Movies & TV" /> ... </head> ... </html>
The pain with Facebook App Links is that it seems Facebook has completely stopped supporting them on iOS without any public acknowledgement. This gives a pretty bad experience to users and causes frustration for app developers who follow Facebook’s official documentation (which has been broken since late 2015).
On iOS, the best workaround is to open a web preview of your app’s content (such as Branch’s free Deepviews or Journeys), and then display a call-to-action button that will successfully launch your app. On Android, you can still successfully use App Links to deep link the user into your app, but only from Facebook’s apps. You can learn more in our post about escaping the limitations of Facebook App Links with Branch Universal Links, or by requesting a Branch demo.
It’s useful to learn about the underlying technologies of mobile deep linking, but in today’s world, no savvy developer should have to spend time implementing these standards alone. Hosted deep link platforms like Branch allow the technical details to be abstracted away, leaving reliable deep links that work everywhere.