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"