如何区分 Firebase 动态链接的启动和安装?
Posted
技术标签:
【中文标题】如何区分 Firebase 动态链接的启动和安装?【英文标题】:How to tell between a launch and an install from a Firebase Dynamic Link? 【发布时间】:2019-01-11 19:08:21 【问题描述】:当用户点击我的 Firebase 动态链接(带有深层链接)以启动我的 android 应用时,会发生以下两种情况之一:
-
如果未安装该应用,用户将被引导至 Google Play 安装该应用,然后使用我的深层链接启动它。
如果应用已安装,它将使用我的深层链接启动。
我的应用需要知道发生了什么。
据我所知,Firebase API 不会告诉我该应用是否已作为 FDL 流程的一部分安装。我错过了什么吗?
附:使用共享首选项对我的目的来说不够好,因为它们在用户清除数据时被删除,因此不能完美地代表安装。我正在寻找类似 @987654321@ 广播事件由 Google Play 触发,但它适用于 Firebase 动态链接。
【问题讨论】:
【参考方案1】:根据documentation,这是完全可能的:
当用户打开您的一个动态链接时,如果您的应用尚未安装,用户会被发送到 Play 商店或应用商店以安装您的应用(除非您另外指定),然后您的应用就会打开。然后,您可以检索传递给您的应用的链接,并根据您的应用处理深层链接
您可以使用Dynamic Links SDK并调用FirebaseDynamicLinks.getDynamicLink()
方法来获取传递给链接的数据:
FirebaseDynamicLinks.getInstance().getDynamicLink(getIntent()).addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>()
@Override
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData)
Uri deepLink = null;
if (pendingDynamicLinkData != null)
deepLink = pendingDynamicLinkData.getLink();
).addOnFailureListener(this, new OnFailureListener()
@Override
public void onFailure(@NonNull Exception e)
Log.w(TAG, "getDynamicLink:onFailure", e);
);
您可以将它与存储在 SharedPreferences 中的“firstlaunch”标志结合使用来检测应用程序是否已安装。
if (prefs.getBoolean("firstlaunch", true))
prefs.edit().putBoolean("firstlaunch", false).commit();
https://firebase.google.com/docs/dynamic-links/android/receive
【讨论】:
这并不能告诉我应用程序是刚刚安装还是已经安装,对吗?这就是我需要知道的。 @BarryFruitman - 您可以将其与布尔 SharedPreference 结合使用作为复合键来检测“全新安装”。所以在启动时 - 检查共享首选项中是否存在一个值,如果存在则该应用程序已安装。查看答案编辑 抱歉 pnavk 但我需要比这更好的东西,因为 SharedPreferences 在用户清除数据时被删除,因此它们不能完美地代表安装。以上是关于如何区分 Firebase 动态链接的启动和安装?的主要内容,如果未能解决你的问题,请参考以下文章
每次用户使用来自 firebase 的动态链接的应用程序安装我的应用程序时,我如何检测和奖励?
应用不在后台时无法识别 Firebase 动态链接 (iOS)