Skip to content Skip to sidebar Skip to footer

Firebase Dynamic Links Is Not Launching My App In Specific Situation

I've made a dynamic link for users to share some contents in my app. The link is working when I click a link in an HTML page using href tag on Android device. It means, if the app

Solution 1:

We have implemented Firebase Dynamic Links according to this documentation https://firebase.google.com/docs/dynamic-links/ and they are working properly in all cases except of Facebook and Facebook Messenger app.

First we generate a dynamic link to our app:

Builderbuilder=newBuilder()
  .scheme("https")
  .authority("winged-guild-133523.appspot.com")
  .appendPath("share")
  .appendQueryParameter("query", query);

Then we generate the long dynamic link:

Builderbuilder=newBuilder()
  .scheme("https")
  .authority("zkkf4.app.goo.gl")
  .appendPath("")
  .appendQueryParameter("link", deepLink)
  .appendQueryParameter("apn", "com.mydomain.myapp");

Then we exchange the long dynamic link with a short link at https://firebasedynamiclinks.googleapis.com/v1/shortLinks and share it using intent:

Intentintent=newIntent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, text);
startActivity(Intent.createChooser(intent, null));

If we share this link using Facebook app:

  • The short link is properly shared.
  • If the app is not installed, clicking on the link in Facebook app goes properly to Google Play and after installing the app the deep link is handled correctly.
  • If the app is installed, clicking on the link in Facebook app goes also to the Google Play and after clicking on open button, the deep link is not transferred to the app because Google Play do not pass referrer information to the app if installation has not been performed.

If we share this link using Facebook Messenger app:

So I see three problems here:

  • Facebook app is not properly detecting that the app is installed.
  • Facebook Messenger app shares a long dynamic link instead of short one.
  • Facebook Messenger app can detect that the app is installed but goes to the link instead of Google Play if the app is not installed.

Do anyone have any idea what is going on an how to solve those issues?

PS: Although this is irrelevant because the deep link handling in the app is working properly this is our manifest intent filter:

<intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter><intent-filterandroid:label="@string/app_name"><actionandroid:name="android.intent.action.VIEW"/><categoryandroid:name="android.intent.category.DEFAULT"/><categoryandroid:name="android.intent.category.BROWSABLE"/><dataandroid:scheme="http"/><dataandroid:scheme="https"/><dataandroid:host="winged-guild-133523.appspot.com"/><dataandroid:host="www.winged-guild-133523.appspot.com"/><dataandroid:pathPattern="/share.*"/></intent-filter>

Solution 2:

Same issue here. iOS and Facebook in-app browser.

According to this, it is still an open issue as of 12/19/19.

But, removing the "efr=1" parameter (in other words, you have to show the preview page) makes it work. That is what the developer who closed the issue stated, but of course this is not an ideal solution.

As one of the users on that same link explains, you can check if the user is using a Facebook in-app browser with this Javascript line:

..... - EDIT - removed this line of code---

I removed the above because it actually crashed when not in the Facebook app. I suggest this code below, which I tested on Chrome, Safari, Firefox Android iOS.

functionisFacebookApp() {
    var ua = navigator.userAgent || navigator.vendor || window.opera;
    return (ua.indexOf("FBAN") > -1) || (ua.indexOf("FBAV") > -1);
}

It is the top-rated answer here.

.....

For me personally, this works somewhat because the users first go to my website, where I supply the dynamic link. So, my website handles the logic and only passes "efr=1" if the user is using a Facebook browser and iOS. Again, not ideal, so hopefully they will fix this longstanding issue.

It might be a bit, as the developed on that link said, "afaik it is currently not possible to open an app via universal link out of the Facebook, Messenger, or WeChat apps without using a preview page..."

Here is another Github issue for your reference.

Solution 3:

//Remove this lines 
<category android:name="android.intent.category.DEFAULT" />
<categoryandroid:name="android.intent.category.BROWSABLE"/>

and  android:pathPattern=".*" /> //not required remove it also
and use android:scheme="http"

Post a Comment for "Firebase Dynamic Links Is Not Launching My App In Specific Situation"