Firebase动态链接无法获取参数 [英] Firebase Dynamic Links failing to fetch parameter

查看:145
本文介绍了Firebase动态链接无法获取参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在我的应用程序中处理邀请,我希望用户推荐其他人,推荐人在他们注册后将获得奖励.我正在 firebase邀请教程中, strong>第2步,我们从普通链接中使用参数invitedby=SENDER_UID

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 tutorial, in step 2 we created a dynamic link from our normal link with our parameter invitedby=SENDER_UID like

           String link = "https://samplelink.com/?invitedby=" + user.getPhone();
        Log.e(TAG, "Generated link: "+link);
        FirebaseDynamicLinks.getInstance().createDynamicLink()
                .setLink(Uri.parse(link))
                .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())
                .buildShortDynamicLink()
                .addOnSuccessListener(shortDynamicLink -> {

                    Uri mInvitationUrl = shortDynamicLink.getShortLink();
                    Log.e(TAG, "generated URL: "+mInvitationUrl.toString());
                    Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string.invite_and_earn))
                            .setMessage(getString(R.string.invitation_message))
                            .setDeepLink(mInvitationUrl)
                            //   .setCustomImage(Uri.parse(getString(R.string.invitation_custom_image)))
                           // .setCallToActionText(user.getPhone())
                            .build();
                    startActivityForResult(intent, REQUEST_INVITE);
                }).addOnFailureListener(e -> Log.e(TAG, "Error Generating Deeplink: "+e.getLocalizedMessage()));


    });

并发送生成的short dynamic link.当用户在第4步中打开应用程序时,我们会看到类似的链接

And sent the generated short dynamic link. When the users opened the app in step 4 we got the link like

 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();
                }
                //
                // If the user isn't signed in and the pending Dynamic Link is
                // an invitation, sign in the user anonymously, and record the
                // referrer's UID.
                //
                FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                if (user == null
                        && deepLink != null
                        && deepLink.getBooleanQueryParameter("invitedby")) {
                    String referrerUid = deepLink.getQueryParameter("invitedby");
                    createAnonymousAccountWithReferrerInfo(referrerUid);
                }
            }
        });

如果在浏览器中打开了显示的原始https://samplelink.com/?invitedby=" + user.getPhone()链接,该链接确实会生成shorted dynamic link并发送,但是在应用程序中我只能得到shortdynamiclink,因此从未找到 invited by .有人遇到这个问题吗?

The link does shorted dynamic link generate fine, and sent, if opened in the browser the original https://samplelink.com/?invitedby=" + user.getPhone() displayed but in the app I only get the shortdynamiclink so invitedby is never found. Anyone had this issue?

我的短动态链接

推荐答案

您可以使用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(), new OnSuccessListener<PendingDynamicLinkData>() {
                        @Override
                        public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                            Uri deepLink = null;
                            if (pendingDynamicLinkData != null) {
                                deepLink = pendingDynamicLinkData.getLink();
                            }
                            final Uri finalDeepLink = deepLink;

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

这篇关于Firebase动态链接无法获取参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆