我正在使用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
}
});
}
答案 0 :(得分:0)
当您从 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 为空,则应用直接从 playStore 下载,否则从任何人的链接下载。虽然如上面评论中提到的 getInitialLink() 仅在通过动态链接打开应用程序时调用。所以,如果它没有被调用,那么应用程序将从 PlayStore 下载。获取senderId后,我们可以检查接收者是否已经在他的数据库中存储了一个推荐id。如果是,那么我们取消新收到的动态链接,如果推荐 id 为空,我们可以在其中存储发件人的 id。因此,我们知道该应用是全新安装还是重新安装。