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.
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 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.
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.