Consider the following scenario:

You have 2 apps, A and B. App A needs to launch App B with a username, and maybe some other more complex data structure. And we can’t assume App B is even installed.

There are various ways to do this.

Possible solution #1: A simple Deep-Linking with parameters should do the trick; And for when App B is not yet installed, we can use a 3rd party service like Branch. But, can you really trust them to connect the dots and be able to communicate the data reliably after the user installs App B?

Due to the hacky nature of such 3rd party services, while they work most of the time, occasionally they do fail to pass the data to the target app.

Also, don’t forget that Apple is all about privacy these days, and services like Branch are no different than tracking tools.

Speaking of privacy, the data you want to send to App B might be sensitive, so you need to trust Branch with your users’ data.

Possible solution #2: Universal Linking, is Apple’s alternative to Deep-Linking, and it does allow you to pass parameters to App B, even if it’s not yet installed. But, then you need a website and network availability. It might not be for everyone.