I am trying to build a deferred deep link in iOS and have been trying to research solutions to accomplish this. By deferred deep link, I mean when the user does not have the application installed, they click the deep link, install the application, then the application is able to open a specific link inside the app by virtue of them using that particular link to download it.
Flawed Solutions
It seems that there are two common solutions to this online, both of which seem to have significant drawbacks.
-
Capturing the IP Address
Upon clicking the link, the server captures the deep link and the IP address of the user before redirecting them to the application. Once the application is finally installed and opened, the IP address is sent to the server to retrieve the deep link if available and redirect the user within the app.
-
While this solution might work, there are several problems with it
- The IP address of the user might not remain constant over that time
- Multiple people can be on the same IP address
-
-
Using iOS Pasteboard
This options uses the pasteboard as an intermediary to pass the deep linking data to the application after installation. After clicking the link, on Safari (or whatever web browser they are using), the deep linking URL will be copied to the pasteboard. After installation, the pasteboard will be checked and depending on its contents the app will navigate wherever it needs to go.
-
It seems like almost every third party solution to this issue uses this method (Branch, Adjust)
-
This option also has several problems associated with it, namely:
- The app will have to prompt every user to access their pasteboard after opening it the first time after installation which the understandably might be hesitant to grant access to.
- If the user overwrites the pasteboard in this time, it will render the deep link useless.
-
Question
Apple is notorious for its walled garden between applications, meaning that native support for this type of thing is not available, leaving us to come up with our own solutions. Is there any other way to perform this deferred deep linking to an iOS application without using any of the aforementioned methods that does not share the same drawbacks?
3