在工作中,我们试图通过firebase门户创建动态链接时使用可选的广告系列跟踪UTM参数。动态链接正常工作,据我了解,只需在创建动态链接的最终可选步骤中添加UTM值即可使这些值随着dynamic_link_app_open事件一起发送。然而,当我们查看dynamic_link_app_open事件的事件或转化选项卡时,我们没有看到任何归因值。我们看到该事件正在被发送,但我们只是没有得到广告系列归因值,因此我们不知道哪些广告系列导致了这些事件和转化。文档在这个特定功能上确实缺乏,这让我们的市场营销部门感到沮丧,最终让开发人员(即我)处理。我已经开发了一个解决方法,但它是一个hack:在firebase门户上创建动态链接时,我直接将utm_source、utm_medium和utm_campaign查询字符串放入deep link中,就像这样(出于安全原因,这不是我们实际的deep link,但你可以理解):
虽然这样做是有效的,但问题是:创建动态链接时选择性添加广告系列跟踪部分的目的是什么?假设在那里放置
例如,这是我如何设置可选的最后一步: 我已经多次跟踪动态链接进入应用程序,并要求测试人员执行相同操作。我等待了36个小时以上(因为我知道这些事件需要一些时间才能传播到云端),我们看到
更令人困惑的是,Firebase动态链接的官方文档指出:“如果您将动态链接事件标记为转化,则可以在归因页面上查看您的动态链接的表现。”然后展示了一个与实际不符的Firebase门户UI图像。
https://www.example.com?utm_source=Test&utm_medium=Test&utm_campaign=Test
接下来,在客户端中,我添加了代码通过Firebase动态链接SDK将动态链接传递后从生成的深度链接中提取这些信息。有了这3个信息,我可以通过FirebaseAnalytics
SDK向Firebase分析发送一个app_open
事件,如下所示:
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);
}
});
虽然这样做是有效的,但问题是:创建动态链接时选择性添加广告系列跟踪部分的目的是什么?假设在那里放置
utm_source
、utm_medium
和utm_campaign
应该允许Firebase自动使用所述广告系列跟踪数据填充dynamic_link_app_open
事件,但它没有这样做。例如,这是我如何设置可选的最后一步: 我已经多次跟踪动态链接进入应用程序,并要求测试人员执行相同操作。我等待了36个小时以上(因为我知道这些事件需要一些时间才能传播到云端),我们看到
dynamic_link_app_open
事件增加,表明我们的动态链接已记录事件,但是当我们深入研究该事件时,没有收集到UTM信息。firebase文档中(https://firebase.google.com/docs/dynamic-links/analytics)是否存在此功能问题?
这段文字涉及到IT技术相关内容,意思是在Firebase上不支持从动态链接点击收集UTM数据,但在Google Analytics上支持。这可能会让人感到困惑(/讽刺)。因此,我们的一些数据(即与广告系列跟踪相关的部分)可能由Google Analytics收集/托管。更令人困惑的是,Firebase动态链接的官方文档指出:“如果您将动态链接事件标记为转化,则可以在归因页面上查看您的动态链接的表现。”然后展示了一个与实际不符的Firebase门户UI图像。
我在 Firebase 控制台上搜索了很久,但没有找到归因选项卡... 这些文档足以让开发人员发疯。
app_first_open
上的事件参数,但数据与Firebase UI上动态链接表中看到的完全不一致。所以,很可能是一个错误。我会向Google支持团队提出此问题。感谢您在此评论线程中回复@michalbrz。 - Thomas Cook