【问题标题】:How to detect if user installed the app using the Firebase dynamic link?如何检测用户是否使用 Firebase 动态链接安装了应用程序?
【发布时间】:2019-12-08 16:02:42
【问题描述】:

我将 Firebase 动态链接用于推荐和赚取。一般来说,用户(比如Receiver)可以通过两种方式下载应用程序:

  • 从 Play 商店安装应用程序(自然下载)。

  • 使用动态链接安装应用程序。

现在,我怎么知道应用程序是否安装在Receiver 的手机中,使用的是另一个用户与他共享的动态链接(比如Sender)。


这是监听应用程序打开的代码,它适用于上述两种情况。我无法检测应用程序是否是使用动态链接安装的。

void _listeningAppOpen() async {
  PendingDynamicLinkData data = await FirebaseDynamicLinks.instance.getInitialLink();
  Uri deepLink = data?.link;

  if (deepLink != null) {
    // app opened by dynamic link
  }

  FirebaseDynamicLinks.instance.onLink(onSuccess: (PendingDynamicLinkData dynamicLink) async {
    Uri deepLink = dynamicLink?.link;

    if (deepLink != null) {
      // app was already opened (in background) and user clicked on dynamic link, we are here now
    }
  });
}

【问题讨论】:

  • 是否可以通过 firebase 动态链接来实现?
  • 您是否找到任何最佳解决方案来实现这一点?
  • @Anukoolsrivastav 还没有。
  • @iDecode 哦,甚至有可能获得“dynamic_link_first_open”事件吗?我应该寻找替代方案来实施全新安装跟踪吗?
  • @iDecode,我为此找到了锻炼方法。检查这个。 stackoverflow.com/a/67732296/4148323

标签: android firebase flutter dart firebase-dynamic-links


【解决方案1】:

当您从 Firebase 控制台创建动态链接时,它会询问您,如果用户没有您想要重定向的应用程序。有两种选择,一种是 PlayStore,第二种是网站。在您的情况下,只需选择 PlayStore,Firebase 将自动处理用户是否安装了该应用程序。如果没有,它会将其重定向到您在 Playstore 上的应用。

当发件人在其设备上单击共享推荐链接时,将发送一个动态链接,其中包含唯一的 senderId 作为链接中的参数。该链接将如下所示: https://yourApp.page.link/?link=https://yourDomain.com/referral?senderId=uniqueSenderId “uniqueSenderId”将用于区分应用是第一次安装还是再次安装。

为了让我们知道应用程序是否已安装在接收者的设备上:发送者的链接将包含一个参数“senderId”,该参数对每个发送者都有唯一的字符串。当接收者打开该链接时,我们可以通过调用获取发送者的唯一 ID:

final PendingDynamicLinkData data = await FirebaseDynamicLinks.instance.getInitialLink();
final Uri deepLink = data?.link;
if(deepLink != null){
   String senderId = deepLink.queryParameters['senderId']
   //Store senderId in Database.
}
else{
   //App is downloaded from playstore. Remember here, in first line above 
   //getInitialLink() is only called when app is opened through a dynamicLink
}

如果 deepLink 为 null,则直接从 playStore 下载应用,否则从任何人的链接下载。尽管如上面评论中提到的 getInitialLink() 仅在通过动态链接打开应用程序时才被调用。因此,如果未调用它,则从 PlayStore 下载应用程序。获取到 senderId 后,我们可以检查接收者是否已经有一个推荐 id 存储在他的数据库中。如果是,那么我们取消新收到的动态链接,如果推荐 id 为空,我们可以将发件人的 id 存储在其中。因此,我们知道该应用是新安装的还是重新安装的。

【讨论】:

  • "Firebase 会自动处理用户是否安装了该应用" -- 我如何了解它?
  • @iDecode 我已经编辑了帖子。我之前误解了这个问题。
  • 这里的“数据库”是指我们自己创建的Firebase提供的一种或其他类型的数据库吗?
  • 引用您的“获取senderId后,我们可以检查接收者是否已经在他的数据库中存储了推荐ID。” -- 你的意思是一旦我们知道用户使用 Firebase 动态链接安装了应用程序,我们就可以将 id 存储在数据库中,下次我们可以将 ID 与存储的 ID 进行比较?
  • @iDecode 是的,我们可以比较一下,我们会知道用户是否已经安装了其他人的推荐ID。
猜你喜欢
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多