如何在 Firebase Android 中获取用户点击的动态短链接?

Posted

技术标签:

【中文标题】如何在 Firebase Android 中获取用户点击的动态短链接?【英文标题】:How to get dynamic short link that the user clicked on, in Firebase Android? 【发布时间】:2017-07-07 10:35:45 【问题描述】:

我在 Firebase 控制台中创建了一个动态链接。它有一个简短的 url,可将用户定向到应用程序内的 Activity。

我在 ios 中也做了同样的事情,使用代码:

 func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool


    if let incomingUrl = userActivity.webpageURL
    
     print(incomingUrl) //Here I get the url that the user clicked on
    

当用户点击动态短链接时,我试图在 android 中获得准确的输出。 目前,我有:

       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();

                    


                    // Handle the deep link. For example, open the linked
                    // content, or apply promotional credit to the user's
                    // account.
                    // ...

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

在这里,我可以获取深层链接,我对在Android中获取短链接没有明确的想法。

谢谢。

【问题讨论】:

【参考方案1】:

您误解了动态链接和Branch.io(完全披露:我在 Branch 团队)等平台的工作方式。 您的 Android 实现是正确的 - iOS 是错误的。您需要查看 the Dynamic Links setup guide for iOS 以确保一切就绪。

使用托管深层链接的主要好处之一是您不需要用户单击的实际 URL。这有两个很好的理由:

该 URL 永远不适用于延迟深层链接用例(当应用尚未安装时)。 通过通用链接/应用链接打开应用时,URL 到达方式与通过自定义 URI 方案不同。

托管链接平台将这些技术细节抽象出来,这样您就可以实现自己的功能而不必担心它们。如果您试图绕过预期的用途,它实际上会使事情变得更加困难。

【讨论】:

当一个用户向另一个用户分享邀请时,我会将用户 ID(特定于应用程序)附加到动态短链接。它在 iOS 中工作,因为我可以获取用户 ID,然后在应用程序中根据需要进行操作。既然您认为这是不可能的,有没有办法我可以获取用户 ID 之类的详细信息?我想我将不得不在构建动态链接时将它们作为参数传递。是这样吗? 这是正确的做法,是的。在 Branch,我们为每个链接返回一个数据字典而不是单个参数,因此我们会自动捕获附加的参数并将它们插入到该数据字典中。这提供了更大的灵活性,但方法基本相同。

以上是关于如何在 Firebase Android 中获取用户点击的动态短链接?的主要内容,如果未能解决你的问题,请参考以下文章

如何在firebase android中获取对象ID?

如何使用kotlin在Android的firebase中获取child的键值

如何在 Firebase Android 中获取用户点击的动态短链接?

Firebase Android - 如何随机获取一些项目[重复]

如何从 Firebase 中的第二个生成的密钥获取数据?

如何在Android Firebase实时数据库中按降序获取孩子[重复]