Dynamic Links & Deep Links - Now Possible!

I am very pleased to announce that we appear to have solved a use-case that has been nagging at me for a long time. An essential component to our app will now be possible. I had mentioned this in a previous post (https://forum.adalo.com/t/deep-linking-from-any-url-to-the-app/33032) one month ago. Feel free to read that, but all the info to solve this can be found below.

My use case seems quite common to me, but Adalo has no way of doing this. And from the public-facing Adalo roadmap, it doesn’t appear to be happening any time soon.

THE NEED

I need to provide a publicly accessible URL that will take someone directly to a listing in my app. (From this URL, I can also create a QR code of course.) The most important thing is that this URL simply needs to work for anyone who uses the URL, whether or not they have the app installed. Some will have the app. Some won’t. But I need to provide only one URL.

The URL needs to be dynamic, so that it can lead to one of the following places:

-My website landing page (for desktop users)
-The App Store (for iOS devices who do NOT have the app installed)
-The Google Play store (for Android devices who do NOT have the app installed)
-A specific screen inside my iOS app (for iOS devices who DO have the app installed)
-A specific screen inside my Android app (for Android devices who DO have the app installed)

This process is described very well in the following video from Google Firebase. Give it a watch, and you will fully understand the need. (Spoiler Alert: Google Firebase is NOT the solution)

THE CHALLENGE

The challenge is in two parts:

Part 1: DEEP LINKS

In two of the scenarios listed above, the device already has the app installed. Once the app launches, you want it to go to a specific screen, or even call up a specific record in your collection. We need to deep linking for this to work. Adalo does not have deep linking.

Part 2: DYNAMIC LINKS

In the other three scenarios above, the app isn’t even on the device yet. So deciding where to direct your experience (as laid out above) is something hat has to happen outside the app. So we need to do some dynamic linking before we even get to the app.

THE SOLUTION

Part 1: DEEP LINKS

The good news is that this part can be handled by Jimmy Noujaim’s deep link component found here. This handles the deep linking once the user arrives in your app. While trying to find this full solution, this was one of the first components I added to the mix. I have spent time working with it and it seems to do the trick nicely. It’s easy to understand and it gets the job done. Plus, Jimmy has been great to work with, including making an important change to it that allowed for this full solution to become a reality.

Part 2: DYNAMIC LINKS

This part was much more frustrating.

If you watch the video form Firebase, above, you’ll see that dynamic linking is a service from Firebase that solves the problem. And it’s free. However, when I went to set it up, I ran into problems getting me to the very last step. You see, it was able to handle the dynamic routing to the web page when no app was installed AND it even launched the app when it was installed. Great! However, the last step of the process requires it to hand off a query parameter to be used by the app to display something specific or take you to a specific page. But Firebase didn’t want to complete that hand-off, so the solution did not work.

I worked closely with Jimmy at this point because I just knew we were on the cusp of solving this. Upon closer inspection, we realized that the app itself would need some additional modification to the core code in order to support this. The customization needs were outside of the scope of a custom component. So, at best, we’d have to work with Adalo at their pace, and then work it into their roadmap and priorities. But I don’t have that kind of time.

Fortunately, I stumbled on another service that promises to do the same things as Firebase’s Dynamic Linking. The service is called Appsflyer (appsflyer.com) . I tried it out and it appears to work perfectly. I now have a URL and query parameters that I can change. And if the user has the app installed, it will take them all the way to the intended content. If they don’t, it will take them to the website or app store(s). The Deep Link component needed one minor tweak in order to support this solution, and Jimmy was able to do that with ease. I’m still testing everything, but it appears that this is the complete solution for dynamic and deep linking.

I’ll keep you informed if I find new information or techniques to improve this capability. Also, maybe there is another service out there, besides Appsflyer, that does dynamic linking too. I would love to hear anyone’s experience with something else.

So it looks like we have this one solved. If you need this functionality, please check out these two puzzle pieces.

Jimmy Noujaim’s deep link component found here

Appsflyer.com

5 Likes

Thank you David! Glad i could help.

2 Likes

Interesting stuff guys. So this would work from a user tapping a notification as well (going to a specific screen showing content for a specific record)? Tons of need for that in my solution.

Great observation. The notifications you can do in Adalo only take you to a screen, but won’t filter… correct?

So, because the premise of your question is that it’s an app-generated notification, then you won’t need the “dynamic” linking part. We already know they have the app.

So it seems like what you need is the Deep Link component. I haven’t tested it in a notification though. I assume it should work, but I’d want to test it first. At least, I would assume the internal deep link url would have to be exposed in the notification text though.

I’ll have to try this and I’ll let you know how seamless it is.

It looks really good! Thank you for introducing us to this alternative, it will surely help many again.

I didn’t understand how to set the deep link on appsflyer, can you give us some advice?

1 Like

Sorry for not answering sooner!
The capability in Appsflyer is called OneLink.

I plan to summarize my findings in terms of best practices as soon as I can. The biggest piece of advice I can give is that there are two ways to visualize the “onelink”. One is a shortened URL (“Short”) and the other one (“Long”) exposes the query variables. You need the second option so that you can specify the query variable that will ultimately be used by the Deep Link component.

Great to see you’ve accomplished this and I have one question that is sort of linked to this and maybe one additional step. If I want to provide a QR code for user to scan so the person that’s referring them to the app or website gets credited for the referral. How could I accomplish this after you have worked out all the above details. I can use a component to make a QR code with a link of the user and a custom referral code. I can use another component to scan it but then how would I link it through will work with what you accomplished above?

You have to generate an appsflyer url containing a query parameter for example call it: userID, and then in your links you specify the id and add it to the qrcode url.