如何在 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 中获取用户点击的动态短链接?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用kotlin在Android的firebase中获取child的键值
如何在 Firebase Android 中获取用户点击的动态短链接?