Prashant Jha
Prashant Jha

Reputation: 604

Why I am unable to get query parameters from Firebase deep link url in Android?

I am trying to get query params from this short dynamic link : https://easyloans.page.link/test

Long Dynamic Link : https://easyloans.page.link/?link=https://www.availfinance.in&apn=com.avail.easyloans.android&utm_campaign=Test_Campaign_Name&utm_medium=Test_Medium&utm_source=Test_Source

Manifest :

<activity android:name=".Activites.DynamicLink">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:host="easyloans.page.link"
                android:scheme="http"
                android:pathPrefix="/"
                android:pathPattern=".*"/>
            <data
                android:host="easyloans.page.link"
                android:scheme="https"
                android:pathPrefix="/"
                android:pathPattern=".*"/>
    </intent-filter>
</activity>

In Android Activity:

FirebaseDynamicLinks.getInstance()
    .getDynamicLink(getIntent())
    .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
        @Override
        public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
            // Get deep link from result (may be null if no link is found)
            Uri deepLink = null;
            if (pendingDynamicLinkData != null) {
                deepLink = pendingDynamicLinkData.getLink();
                Log.d(TAG, "source : " + pendingDynamicLinkData.getLink().getQueryParameter("utm_source"));
            }

            Log.d(TAG, "link " + deepLink);

        }
    })
    .addOnFailureListener(this, new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Log.d(TAG, "getDynamicLink:onFailure", e);
        }
    });

Output which i am receiving is : link https://www.availfinance.in and source : null (I am expecting Test_Source in this)

Upvotes: 3

Views: 2482

Answers (1)

Ian Barber
Ian Barber

Reputation: 19960

The getLink() method returns the link parameter you set on the long FDL, which in your example link was just what was returned: link=https://www.availfinance.in.

The UTM parameters are passed automatically to Google Analytics for Firebase.

pendingDynamicLinkData.getLink().getQueryParameter("foo") will return a value only if it is on the URL contained within the link parameter, e.g. if your link was link=https://www.availfinance.in/?foo=bar (with appropriate URL encoding).

Upvotes: 4

Related Questions