如何从动态链接接收字符串?

时间:2018-04-27 00:12:47

标签: android firebase

我设置了动态链接,您可以与此人分享链接

Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("text/plain");
    intent.putExtra(Intent.EXTRA_SUBJECT, "Join my group for Lesn");
    intent.putExtra(Intent.EXTRA_TEXT, "https://y28rt.app.goo.gl/?link=https://Lesn.com/joinGroup&apn=c.kristofer.jax2[&amv=21]&groupUid=" + groupUid);
    startActivity(intent);

正如您在链接中看到的那样

  

" https://y28rt.app.goo.gl/?link=https://Lesn.com/joinGroup&apn=c.kristofer.jax2[&amv=21]&groupUid=" + groupUid

我添加了额外的数据

  

groupUid =" + groupUid)

我的问题是如何使用此

从链接中接收该字符串
FirebaseDynamicLinks.getInstance()
            .getDynamicLink(getIntent())
            .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
                @Override
                public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                    Uri deeplink = null;
                    if (pendingDynamicLinkData != null){
                        deeplink = pendingDynamicLinkData.getLink();
                    }


                }
            });
  

修改

所以我的问题实际上是为我的深层链接输入了错误的值。现在我已经开始工作,但我的另一个问题仍然存在。使用deeplink.getQueryParameter(&#34; groupUid&#34;),当我尝试记录该值时,它返回null。

1 个答案:

答案 0 :(得分:3)

首先,使用Uri方法

从deepLink获取参数
String group = deeplink.getQueryParameter("groupUid");

在此之前,要将参数附加到Firebase的动态链接,您必须在生成动态链接之前将参数添加到主链接

private void attachParameter(String groupUid) {
    Uri link = Uri.parse("https://Lesn.com/joinGroup")
        .buildUpon()
        .appendQueryParameter("groupUid", groupUid)
        .build();
    generateDynamicLink(link.toString());
}


private void generateDynamicLink(String link) {
    Uri dynamicLink = Uri.parse("https://y28rt.app.goo.gl")
        .buildUpon()
        .appendQueryParameter("link", link)
        .appendQueryParameter("apn", "c.kristofer.jax2")
        .build();

    Log.d(TAG, "generateDynamicLink: " + dynamicLink.toString());
}

但是我建议使用firebase lib而不是build dynamic link manual:

private void generateDynamicLinkWithLib(Uri link) {
    DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(link)
        .setDynamicLinkDomain("y28rt.app.goo.gl")
        .setAndroidParameters(new Builder().build())
        .setIosParameters(new IosParameters.Builder("c.kristofer.jax2")
            .build())
        .buildDynamicLink();

    Log.d(TAG, "generateDynamicLink: " + dynamicLink.getUri().toString());
}