繁体   English   中英

将参数添加到 Firebase 动态链接

[英]Add parameter to Firebase Dynamic Links

我想让用户通过单击按钮并发送其他潜在用户链接来从我的应用程序共享产品

www.myapp.com/offer/123

在那里,必须在用户单击按钮的那一刻生成“123”,以便稍后使用

FirebaseDynamicLinks.getInstance()
            .getDynamicLink(getIntent())
            .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
                @Override
                public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                    Uri deepLink;
                    if (pendingDynamicLinkData != null) {
                        deepLink = pendingDynamicLinkData.getLink();

但不幸的是我无法传递参数。

String link = "http://www.myapp.com/offer/123";
        Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
                .setLink(Uri.parse(link))
                .setDynamicLinkDomain("fgd3e.app.goo.gl")
                .buildShortDynamicLink()
                .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
                    @Override
                    public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                        if (task.isSuccessful()) {
                            // Short link created
                            Uri shortLink = task.getResult().getShortLink();
                            Uri flowchartLink = task.getResult().getPreviewLink();

有人可以教我如何在运行时使用自定义参数创建动态链接,以便将目标用户重定向到特定的产品详细信息吗?

简短回答:使用查询参数而不是路径变量,您可以使用来自pendingDynamicLinkData.getLink()返回的Uri对象的getQueryParameter方法


我一直在做的是使用查询参数而不是路径变量。

我没有发送http://www.myapp.com/offer/123 ,而是发送类似http://www.myapp.com/?offer=123 的内容

要动态添加参数,我只是连接字符串: "http://www.myapp.com/?offer=" + myValue

此 URL 又是在 firebase 中创建的动态链接的查询参数:

String url = "https://YourDynamicLinkIdentifier.app.goo.gl/?link=https://myapp.com?offer=" 
+ myOfferVar 
+ "&apn=com.your.apn"; // << Dont forget to change this too

这个结果 URL 是我发送给 url 缩短器的 URL。

然后在回调onSuccess(PendingDynamicLinkData pendingDynamicLinkData)调用getLink()pendingDynamicLinkData因为你已经做。

现在您有了一个 Uri 对象,您可以通过调用方法getQueryParameter("offer")轻松获取参数。

if (pendingDynamicLinkData != null) {
     deepLink = pendingDynamicLinkData.getLink();
     String offerKey = deepLink.getQueryParameter("offer");

注意:如果您仍然更喜欢使用路径变量,您可以获得 Uri 路径的最后一段。 请参阅如何获取 uri 的最后一个路径段

您需要使用长深度链接来发送参数。

示例:

1)通过谷歌播放测试网址打开应用程序的链接:

https://xx.page.link/?link=https://xx.com/invitation/?id=2&apn=com.xx.app&afl=https://play.google.com/apps/testing/com.xx.app

2)接收参数:

       FirebaseDynamicLinks.getInstance()
            .getDynamicLink(getIntent())
            .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
                @Override
                public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                    Uri deepLink = null;
                    if (pendingDynamicLinkData != null) {
                        deepLink = pendingDynamicLinkData.getLink();
                        String paramValue = deepLink.getQueryParameters("id").get(0)); // it will get "2" as a value
                    }

                }
            })
            .addOnFailureListener(this, new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.w("Splash", "getDynamicLink:onFailure", e);
                }
            });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM