3

在 Android 上使用 Firebase 邀请并在应用启动时访问动态链接时,有没有办法知道用户是通过邀请才安装应用还是已经安装?

非常感谢,

博尔哈

4

2 回答 2

1

编辑:感谢 Catalin Morosan 的回答

事实证明,您可以使用 method 找到它AppInviteReferral.isOpenedFromPlayStore(result.getInvitationIntent())。在您单击邀请时运行的活动中:

// Create an auto-managed GoogleApiClient with access to App Invites.
mGoogleApiClientInvite = new GoogleApiClient.Builder(this)
        .addApi(AppInvite.API)
        .enableAutoManage(this, this)
        .build();

// Check for App Invite invitations and launch deep-link activity if possible.
// Requires that an Activity is registered in AndroidManifest.xml to handle
// deep-link URLs.
boolean autoLaunchDeepLink = false;
AppInvite.AppInviteApi.getInvitation(mGoogleApiClientInvite, this, autoLaunchDeepLink)
        .setResultCallback(
                new ResultCallback<AppInviteInvitationResult>() {
                    @Override
                    public void onResult(AppInviteInvitationResult result) {
                        if (result.getStatus().isSuccess()) {
                            // Extract information from the intent
                            Intent intent = result.getInvitationIntent();
                            String invitationId = AppInviteReferral.getInvitationId(intent);
                            boolean alreadyUser = AppInviteReferral.isOpenedFromPlayStore(result.getInvitationIntent());
                            if (alreadyUser) {
                                // Do stuff...
                            } else {
                                // Do other stuff...
                            }
                        }
                    }
                });
于 2016-10-09T07:54:26.183 回答
0

根据此 Google 产品表单帖子,Firebase 动态链接库在每个应用程序生命周期内只会检查一次传入的深层链接,这意味着您需要卸载并重新安装应用程序才能再次检查。这会影响该getInvitation()方法的行为,并且您似乎可以根据此方法的结果暗示该应用程序之前是否已安装。

对我来说,这似乎非常令人困惑。在Branch.io,我们完全不同:您的链接数据对象将始终包含一个is_first_session布尔值,您可以以您选择的任何方式以编程方式处理它。

于 2016-10-03T14:46:12.993 回答