Firebase 动态链接活动跟踪不起作用

Tho*_*ook 9 android event-tracking firebase firebase-analytics firebase-dynamic-links

在工作中,我们尝试在通过 firebase 门户创建动态链接时使用可选的活动跟踪 UTM 参数。

动态链接工作正常,据我从所有官方文档中得知,在创建动态链接时在最后一个可选步骤中添加 UTM 值应该会导致这些值与dynamic_link_app_open事件一起发送。

但是,当我们查看事件的事件或转化选项卡时,我们没有看到任何归因值dynamic_link_app_open。我们看到正在发送该事件,但我们只是没有获得广告系列归因值,因此我们不知道哪些广告系列导致了这些事件和转化。

这个特定功能的文档真的很缺乏,这让我们的营销部门感到沮丧,最终与开发人员(即我)合作。

我已经开发了一个解决方法,但它是一个黑客:

在 firebase 门户上创建动态链接时,我将utm_source,utm_mediumutm_campaign查询字符串直接放入深层链接中(出于安全原因,不是我们实际的深层链接,但您明白了):

https://www.example.com?utm_source=Test&utm_medium=Test&utm_campaign=Test
Run Code Online (Sandbox Code Playgroud)

然后在客户端中,我添加了代码,在通过 firebase 动态链接 SDK 传递动态链接后,将这些代码从生成的深层链接中提取出来。有了这 3 位信息,我可以app_open通过FirebaseAnalyticsSDK将事件发送到 Firebase 分析,如下所示:

FirebaseDynamicLinks.getInstance()
    .getDynamicLink(getIntent())
    .addOnSuccessListener(this, pendingDynamicLinkData -> {
        if (pendingDynamicLinkData != null) {
            Uri optionalDynamicDeepLink = pendingDynamicLinkData.getLink();
            if (optionalDynamicDeepLink != null) {
                List<String> utmSource = optionalDynamicDeepLink.getQueryParameters(UTM_SOURCE);
                List<String> utmCampaign = optionalDynamicDeepLink.getQueryParameters(UTM_CAMPAIGN);
                List<String> utmMedium = optionalDynamicDeepLink.getQueryParameters(UTM_MEDIUM);

                if (!utmSource.isEmpty() && !utmCampaign.isEmpty() && !utmMedium.isEmpty()) {

                    String utmSourceParam = String.valueOf(utmSource);
                    String utmCampaignParam = String.valueOf(utmCampaign);
                    String utmMediumParam = String.valueOf(utmMedium);

                    Bundle params = new Bundle();
                    params.putString(FirebaseAnalytics.Param.SOURCE, utmSourceParam);
                    params.putString(FirebaseAnalytics.Param.CAMPAIGN, utmCampaignParam);
                    params.putString(FirebaseAnalytics.Param.MEDIUM, utmMediumParam);
                    FirebaseAnalytics.getInstance(this).logEvent(FirebaseAnalytics.Event.CAMPAIGN_DETAILS, params);
                    FirebaseAnalytics.getInstance(this).logEvent(FirebaseAnalytics.Event.APP_OPEN, params);
                }

                String dynamicDeepLink = optionalDynamicDeepLink.toString();

                if (!handleDeepLink(dynamicDeepLink)) {
                    Generic.openLinkInCustomTabs(getApplicationContext(), deepLinkOptional);
                }
            } else {
                if (!handleDeepLink(deepLinkOptional)) {
                    handleIntent(intent);
                }
            }
        } else {
            if (!handleDeepLink(deepLinkOptional)) {
                handleIntent(intent);
            }
        }
}).addOnFailureListener(this, e -> {
    if (!handleDeepLink(deepLinkOptional)) {
        Generic.openLinkInCustomTabs(getApplicationContext(), deepLinkOptional);
    }
});
Run Code Online (Sandbox Code Playgroud)

虽然这有效,但它引出了一个问题;创建动态链接时,可选的广告系列跟踪部分有何意义?大概把utm_sourceutm_mediumutm_campaign有应该允许火力以自动神奇地填充dynamic_link_app_open与所述运动跟踪数据的事件,但事实并非如此。

例如,这是我如何设置可选的最后一步:

活动跟踪部分

然后我多次跟随动态链接进入应用程序,并要求测试人员也这样做。我已经等了 36 多个小时(因为我知道这些事件可能需要一些时间才能传播到云中)并且我们看到dynamic_link_app_open事件不断增加,这表明我们的动态链接记录了一个事件,但是当我们深入研究该事件时没有收集到 UTM 信息。

firebase的这个功能坏了吗?

我可以从官方 firebase 文档(https://firebase.google.com/docs/dynamic-links/analytics)中看到这一点:

在此处输入图片说明

这表明 firebase 不支持从动态链接点击中收集 UTM 数据,但谷歌分析支持。这一点都不令人困惑(/讽刺)。所以大概我们的一些数据(即与活动跟踪有关的数据)是由谷歌分析收集/托管的?

为了进一步混淆,firebase 动态链接的官方文档指出:

“如果您将动态链接事件标记为转化,您可以在归因页面上查看动态链接的表现。”

然后显示与现实不匹配的 firebase 门户 UI 的图像:

在此处输入图片说明

我在 firebase 控制台上搜索并搜索了一个归因选项卡,但没有一个……这些文档足以让开发人员发疯。

小智 0

根据这个答案

您在 UI 中选择的 UTM 参数是移动跟踪的参数。如果您想将 UTM 参数传递到您的“后备”网站,您需要将它们添加到后备地址本身。