Skip to content Skip to sidebar Skip to footer

Firebase Dynamic Links Failing To Fetch Parameter

I am working on invites in my app, I want users to refer others, the referrer will get a reward after the person they referred registers. I was following this firebase invite tutor

Solution 1:

Instead of concatenating parameter with the link you can use appendQueryParameter()

String link = "https://samplelink.com/";
        Log.e(TAG, "Generated link: "+link);
        FirebaseDynamicLinks.getInstance().createDynamicLink()
                .setLink(Uri.parse(link).buildUpon().appendQueryParameter("invitedby",user.getPhone()).build())
                .setDynamicLinkDomain(getString(R.string.dynamic_link_domain))
                .setAndroidParameters(
                        new DynamicLink.AndroidParameters.Builder(getPackageName())
                                .build())
                .setIosParameters(
                        new DynamicLink.IosParameters.Builder("com.example.ios")
                                //.setAppStoreId("123456789")
                              //  .setMinimumVersion("1.0.1")
                                .build())

And in your activity on can retrieve your parameter as follow,

FirebaseDynamicLinks.getInstance().getDynamicLink(getActivity().getIntent())
                    .addOnSuccessListener(getActivity(), newOnSuccessListener<PendingDynamicLinkData>() {
                        @OverridepublicvoidonSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                            UrideepLink=null;
                            if (pendingDynamicLinkData != null) {
                                deepLink = pendingDynamicLinkData.getLink();
                            }
                            finalUrifinalDeepLink= deepLink;

                            if (finalDeepLink != null && finalDeepLink.getBooleanQueryParameter("invitedby", false)) {
                                StringreferrerPhoneId= finalDeepLink.getQueryParameter("invitedby");

Solution 2:

I ended up using the Invite API instead

Uri uri = Uri.parse(getString(R.string.invitation_deep_link));
        Uri deepLinkPlus = Uri.withAppendedPath(uri, user.getPhone());
        Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string.invite_and_earn))
                .setMessage(getString(R.string.invitation_message))
                .setDeepLink(deepLinkPlus)
                //.setCustomImage(Uri.parse(getString(R.string.invitation_custom_image)))//.setCallToActionText("invitedby")
                .build();
        startActivityForResult(intent, REQUEST_INVITE);

And from the activity that receives the deeplink

 FirebaseDynamicLinks.getInstance().getDynamicLink(getIntent())
            .addOnSuccessListener(this, data -> {
                if (data == null) {
                    Log.d(TAG, "getInvitation: no data");
                    return;
                }
                Uri deepLink = data.getLink();
                String referrerPhone = deepLink.getLastPathSegment();
                SharedPreferencesUtils.saveString(this, SharedPreferencesUtils.PREF_REFERER, referrerPhone);

            })
            .addOnFailureListener(this, e -> Log.w(TAG, "getDynamicLink:onFailure", e));

Post a Comment for "Firebase Dynamic Links Failing To Fetch Parameter"