App linking service requirements
New app users are in high demand of the onboarding process to be as smooth as some deep linking services (such as branch.io), but at the same time, no one wants to be tracked with the browser's fingerprint to keep the context embedded in the deep link.
It is important to mention that the tools for such a service must be open source.
Proposal
We can make the onboarding process via links more secure and safe for the user. The onboarding process must not use any fingerprint tracking solutions (e.g. fingerprintjs.com).
To achieve it, we will provide links which should be followed once, in case the app is installed, and twice, in case the app is not yet downloaded. The first tap on such a link should lead the user to the App Store / Google Play to download the app, the second tap should bring the user to the app with the context predefined by the link.
In our case a single tap on the link cannot save the context for an app that has not yet been installed, since we do not save any information about the user via a fingerprint the first time they click on such a link. For this reason, the user currently has to follow the link again after installing the application.
Tools to implement
Backend tools
- Backend service - used to generate a shortened link with some predefined context bound into a generated unique hash ID, e.g. link.app.org/JhLeOlGIEjaIOFHR0xd. The backend service must also be able to fetch the context from the hash ID. The service can be self-hosted and deployed anywhere.
Frontend tools
- Dashboard - tied to the backend service and must be able to customize the link routing by adding an iOS and Android app URI prefix and App Store / Google Play link and defining the site domain name for web. This information will be used to correctly resolve the link. The dashboard can be presented either as a web interface or as a CLI.
- Browser links resolver - used to resolve shortened links in order to redirect the user to the desired location. It can be configured using data taken from the dashboard. For mobile users, it must check if the app is installed and either open the installed app, or lead to App Store / Google Play to download the app. For web users it must just open a website. In both cases the unique link ID must be passed to the application as a parameter.
- JavaScript SDK - used to interact with the backend service by making requests to fetch the context knowing the link ID or creating such links with a defined context. N.B. An optional ability to listen when the app is opened from such a link is a good bonus (but to make it work on mobile devices, you will need to add an additional wrapper for react-native). The SDK must be configurable to be able to connect to any of these backend services.
Keep in mind that all these tools must be open sourced!