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

问题描述:

我在Firebase控制台中创建了动态链接。它有一个简短的URL,用于将用户指向应用程序内的Activity。如何在Firebase Android中获取用户点击的动态短链接?

我已经做了在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中的短链接没有清晰的概念。

谢谢。

您误会了动态链接和Branch.io(全面披露:我在分支团队)工作的平台方式。 你的Android实现是正确的 - iOS是错误的。你会想检讨the Dynamic Links setup guide for iOS,以确保你全部设定。

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

  • 该URL永远不可用于延期深层链接用例(应用程序尚未安装时)。
  • 当应用程序通过通用链接/应用程序链接打开而不是通过自定义URI方案时,URL到达的方式不同。

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

+0

当用户将邀请分享给其他用户时,我会将用户ID(特定于应用程序)附加到动态短链接。它在iOS中工作,因为我可以获取用户ID,然后在应用程序内部根据需要进行操作。 既然你认为这是不可能的,有没有一种方法可以获取像userID这样的细节?我想我会在构建动态链接时将它们作为参数传递。是这样吗? –

+0

这是正确的方法,是的。在Branch中,我们为每个链接返回一个数据字典而不是一个参数,所以我们自动捕获附加的参数并将它们插入到数据字典中。这给了更多的灵活性,但基本上是相同的方法。 –