如何在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到达的方式不同。
托管链接平台将这些技术细节提取出来,以便您可以实现自己的功能而不必担心它们。如果你试图绕过预期的用法,它实际上会让事情变得更加困难。
当用户将邀请分享给其他用户时,我会将用户ID(特定于应用程序)附加到动态短链接。它在iOS中工作,因为我可以获取用户ID,然后在应用程序内部根据需要进行操作。 既然你认为这是不可能的,有没有一种方法可以获取像userID这样的细节?我想我会在构建动态链接时将它们作为参数传递。是这样吗? –
这是正确的方法,是的。在Branch中,我们为每个链接返回一个数据字典而不是一个参数,所以我们自动捕获附加的参数并将它们插入到数据字典中。这给了更多的灵活性,但基本上是相同的方法。 –