android - Firebase 动态链接广告系列跟踪不起作用

标签 android firebase firebase-analytics firebase-dynamic-links event-tracking

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

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

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

文档确实缺少此特定功能,这让我们的营销部门感到沮丧,最终最终由开发人员(即我)负责。

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

在 Firebase 门户上创建动态链接时,我输入了 utm_source , utm_mediumutm_campaign像这样直接查询字符串到深层链接(出于安全原因,不是我们实际的深层链接,但你明白了):

https://www.example.com?utm_source=Test&utm_medium=Test&utm_campaign=Test

然后在客户端中,在通过 firebase 动态链接 SDK 传递动态链接后,我添加了代码以将这些从生成的深层链接中提取出来。有了这 3 位信息,我可以发送 app_open通过 FirebaseAnalytics 发送到 Firebase 分析的事件像这样的SDK:
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);
    }
});

虽然这有效,但它引出了一个问题;创建动态链接时,可选的 Activity 跟踪部分有什么意义?大概把 utm_source , utm_mediumutm_campaign应该允许firebase自动填充dynamic_link_app_open具有所述 Activity 跟踪数据的事件,但事实并非如此。

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

Campaign Tracking Section

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

firebase 的这个功能被破坏了吗?

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

enter image description here

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

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

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

然后显示与现实不符的 Firebase 门户 UI 图像:

enter image description here

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

最佳答案

我联系了谷歌,因为问题似乎仍然没有解决。这是答案:
“目前,由于 iOS 平台限制的指纹匹配机制,不支持 iOS 平台的 Firebase 动态链接 UTM 事件跟踪。作为一项行动,我已将此支持票链接到我们现有的功能请求,让我们的工程团队知道越来越有兴趣为 FDL 的 iOS 平台实现此 utm_ 跟踪机制。我无法分享发布的确切细节或时间表,但我们正在考虑您的兴趣以改进此功能。您可以查看我们的发布说明任何更新。”
我不明白“指纹匹配机制”到底是什么意思。但我知道这个问题得到解决需要数年时间。

关于android - Firebase 动态链接广告系列跟踪不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62133370/

相关文章:

android - 尝试将谷歌帐户与新电话号码相关联时出现 FirebaseAuthUserCollisionException

firebase - 我如何上传多张图片到 flutter 中的 firebase 并获取它们的所有下载 url

firebase - Bigquery 中的 firebase/GA4 数据是否会追溯更改

android - 使用Android MediaCodec编码时修改音频音调/速度

java - 我们如何从 fragment 启动 Activity

firebase - flutter/firebase 数据库中的一个简单的 where 子句

sql - 如何在新模式中编写 Bigquery 并从 Firebase 分析中替换旧模式中的 event_dim?

android - 在我的项目中没有使用 firebase 但仍然抛出 Firebase API 初始化失败

android - WorkManager - 当我们同时使用默认初始化和自定义初始化时,我们是否应该删除默认初始化程序?

android - 为什么 getNetworkCountryIso() 方法在三星设备上返回没有 Sim 卡的国家代码?