如何使用适用于Android的Firebase动态链接接收全局链接

时间:2017-12-17 19:36:41

标签: android firebase deep-linking firebase-dynamic-links

假设第一个用户向第二个用户发送邀请。 用户发送一些全局链接,第二个用户接收它。 在我的情况下,用户在Android设备中收到dynamic link而不是global link

我想分享目前的uri https://aewp.com/share

private void shareVocabulary() {
    Intent intent = new AppInviteInvitation.IntentBuilder("Text")
            .setMessage("Message")
            .setDeepLink(createDynamicLink().getUri())
            .setCustomImage(Uri.parse("https://lh3.googleusercontent.com/info.jpg"))
            .setCallToActionText(getString(R.string.install))
            .build();
    startActivityForResult(intent, SHARE_RESULT_CODE);
}

public DynamicLink createDynamicLink(){

        String domain = getString(R.string.domain) + ".app.goo.gl";

        return FirebaseDynamicLinks.getInstance().createDynamicLink().
                setLink(Uri.parse("https://aewp.com/share")).
                setDynamicLinkDomain(domain).
                setAndroidParameters(new DynamicLink.AndroidParameters.Builder(getPackageName()).
                        setFallbackUrl(Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName())).
                        build()
                ).
                buildDynamicLink();
    }

DeepLinkActivity.class

以下代码每次都返回动态链接,而不是全局链接

 FirebaseDynamicLinks.getInstance().getDynamicLink(getIntent())
                .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
                    @Override
                    public void onSuccess(PendingDynamicLinkData data) {
                        if (data == null) {
                            Logger.logInfo(getClass(), "getInvitation: no data");
                            return;
                        }

                        // Get the deep link
                        Uri link = data.getLink();
                    }
                })
                .addOnFailureListener(this, new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Logger.logError(getClass(), "getDynamicLink:onFailure", e);
                    }
                });

据我所知,我应该回复此链接https://aewp.com/share,而不是短期或大型动态链接

我该如何解决?

1 个答案:

答案 0 :(得分:0)

Intent类型之间有一点点区别 要Firebase AppInviteInvitation我们不使用深层链接,而不是我们应该传递动态链接。

    Intent intent = new AppInviteInvitation.IntentBuilder("Send")
            .setMessage("Message")
            .setDeepLink(R.string.global_link).build())
            .setCustomImage(Uri.parse("https://lh3.googleusercontent.com/9.jpg"))
            .setCallToActionText("Install))
            .build();
    startActivityForResult(intent, SHARE_RESULT_CODE);

使用Intent.ACTION_SEND发送数据时,我们需要为不同平台使用动态链接

    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.putExtra(Intent.EXTRA_TEXT,"Text here " + createDynamicLink().getUri().toString());
    intent.setType("text/plain");
    startActivity(Intent.createChooser(intent, "choose one"));