Firebase 动态链接新安装事件

Posted

技术标签:

【中文标题】Firebase 动态链接新安装事件【英文标题】:Firebase Dynamic Link New Install Events 【发布时间】:2021-08-08 11:28:12 【问题描述】:

每当用户点击任何动态链接时,我都想在我的 android 应用中获取新安装或应用打开/重新打开事件。

根据文档在 Analytics 中捕获以下事件:

dynamic_link_first_open

dynamic_link_app_open

但我找不到任何方法从示例侦听器中获取这些内容。

【问题讨论】:

【参考方案1】:

我找到了上述问题的解决方案。在此处分享详细信息。

下面的代码也是从 PlayStore 测试的。

您可以通过从addOnSuccessListener 接收到的pendingDynamicLinkData 回调对象获取提到的两个事件。

在此处获取链接和相关动态链接数据的完整代码。

FirebaseDynamicLinks.getInstance()
                .getDynamicLink(getIntent())
                .addOnSuccessListener(this, pendingDynamicLinkData -> 
                    // Get deep link from result (may be null if no link is found)
                    try 
                        Uri deepLink = null;
                        if (pendingDynamicLinkData != null) 
                            deepLink = pendingDynamicLinkData.getLink();

                            sendInstallDetailToAPI(pendingDynamicLinkData.getExtensions());

                        
                        CgUtils.showLog(TAG, "getDynamicLink:onSuccess" + deepLink);
                     catch (Exception e) 
                        CgUtils.showLog(TAG, "getDynamicLink:onFailure" + e);
                    

                )
                .addOnFailureListener(this, e -> CgUtils.showLog(TAG, "getDynamicLink:onFailure" + e));

如果需要,可以使用以下方法将动态链接数据发送到后端 API。

private void sendInstallDetailToAPI(Bundle deepBundle) 

      
        Bundle deepLinkData = deepBundle.getBundle("scionData");
        if (deepLinkData != null) 
            Bundle appReOpenBundle = deepLinkData.getBundle("dynamic_link_app_open");
            boolean isInstall = false;
            String medium = "", source = "", campaign = "", shortLink = "";
            if (appReOpenBundle != null) 
                medium = appReOpenBundle.getString("medium", "NA");
                source = appReOpenBundle.getString("source", "NA");
                campaign = appReOpenBundle.getString("campaign", "NA");
                shortLink = appReOpenBundle.getString("dynamic_link_link_id", "NA");
            

            Bundle appFirstOpenBundle = deepLinkData.getBundle("dynamic_link_first_open");

            if (appFirstOpenBundle != null) 
                isInstall = true;
                medium = appFirstOpenBundle.getString("medium", "NA");
                source = appFirstOpenBundle.getString("source", "NA");
                campaign = appFirstOpenBundle.getString("campaign", "NA");
                shortLink = appFirstOpenBundle.getString("dynamic_link_link_id", "NA");
            

        // Send ABOVE detail to your respective APIs


        
    

现在如果isInstall 标志为真,则表示它是安装后第一次打开,否则重新打开。

【讨论】:

以上是关于Firebase 动态链接新安装事件的主要内容,如果未能解决你的问题,请参考以下文章

新安装的程序打开时提示无法定位程序输入点CLRCreateinstance 于动态链接库mscoree.dll上

无法从 Firebase 缩短的动态链接网址检索动态链接

动态创建的 Firebase 动态链接不适用于 Android

Firebase动态链接-Continueuseractivity不返回动态链接网址

Firebase 动态链接始终为空

动态链接 Firebase