0

经过几天尝试不同的方法,我们已经没有选择了。我们的目标是拥有一个可以使用分支链接打开/安装的 Reach Native 应用程序。用户的使用情况以及他们如何进入应用程序(属性)的数据最终发送到 Mixpanel。由于我们还有其他几个地方要分析使用数据,并且我们希望保持平台耦合较弱,因此我们选择使用 Segment。

关键挑战是让 Branch 确定的归因数据应用于 Mixpanel 中与一般应用程序使用相同的不同 ID。

例如,“已查看文章 123”的事件分配给用户 ABC,而来自同一个人、同一部电话、同一会话期间的事件,即“通过 QR 码打开应用程序”的事件分配给用户 DEF。(这些事件名称只是说明性的,上下文实际上在元数据中。)

到目前为止,我已经尝试使用 React Native led 设置

import analytics from '@segment/analytics-react-native';
import branch from '@segment/analytics-react-native-branch';
import mixpanel from '@segment/analytics-react-native-mixpanel';

analytics.setup(WRITE_KEY, {
  using: [branch, mixpanel]
});

我们还尝试了一种更原生的方法,其中初始化 Segment 和 Branch 并在其中共享 idMainApplication.java

Analytics analytics = new Analytics.Builder(this, WRITE_KEY).trackApplicationLifecycleEvents().recordScreenViews().build();
Analytics.setSingletonInstance(analytics);
Branch.getInstance().setRequestMetadata(
  "$mixpanel_distinct_id",
  Analytics.with(this).getAnalyticsContext().traits().anonymousId()
);
Branch.getInstance().setRequestMetadata(
  "$segment_anonymous_id",
  Analytics.with(this).getAnalyticsContext().traits().anonymousId()
);

我们还尝试了另一个版本,其中也初始化了 Mixpanel,MainApplication.java并从那里传递了不同的 Id。

MixpanelAPI mp = MixpanelAPI.getInstance(this, MP_KEY);
Branch.getInstance().setRequestMetadata("$mixpanel_distinct_id", mp.getDistinctId());

在试验这些原生设置(在几种不同的排列中)时,我们调用了 SegmentsuseNativeConfiguration方法。

有了实际云路由的记录,我们也尝试了我们能想象到的每一个合理的设置。包含:

  • 段 -> MP AND 分支 -> MP
  • 段 -> MP AND 段 -> 分支 -> MP
  • Segment -> MP AND Segment <-> Branch -> MP(注意 Branch 正在导入和导出 Segment 数据)
  • 段 -> 分支 -> MP

我们已经尝试了可能配置的许多不同排列,但没有一个能够创建正确连接的数据。我们愿意用替代方案替换 Segment 或 Branch,但由于业务限制,无法替换 Mixpanel 和 React Native。

“Segment -> Branch -> MP”的最新云配置显示出最大的希望,但即使文档说识别调用已传递给 Branch,但在调试时它们不是。这意味着永远无法在 Mixpanel 中填充用户的个人资料。

任何可以提供的帮助将不胜感激。

4

1 回答 1

0

好的,我们认为我们已经通过上述技术以可接受的方式进行了这项工作。

我们最终的设置是在本机级别初始化 Analytics(Segment)和 Branch。将“$mixpanel_distinct_id”和“$segment_anonymous_id”都设置为管道不同阶段的 Segment 匿名 ID。并打破Segment和Branch之间的连接。所以最终我们有以下两条路径:

  • 应用程序 -> 细分 -> 混合面板
  • 应用程序 -> 分支 -> 混合面板

由于 Mixpanel 中只有来自 Branch(前缀为 [BRANCH])的事件才会具有用户的属性,因此我们设置了一个 Lambda 函数来读取这些事件,然后调用 Mixpanel API 来设置 UTM 媒体、活动和渠道的用户属性。为了得到这个连接,我们必须重新连接 Branch 以使用完全独立的源将事件导出到 Segment,然后将其作为目标发送到 Lambda。就像是:

  • 分支 -> Lambda -> 混合面板

代码片段:

// MainApplication.java
this.initializeSegment();
RNBranchModule.getAutoInstance(this);
RNBranchModule.setRequestMetadata("$segment_anonymous_id",
      Analytics.with(this).getAnalyticsContext().traits().anonymousId()
);
RNBranchModule.setRequestMetadata("$mixpanel_distinct_id",
      Analytics.with(this).getAnalyticsContext().traits().anonymousId()
);
    
private void initializeSegment() {
    Analytics.Builder builder = new Analytics.Builder(this, BuildConfig.SEGMENT_WRITE_KEY)
                .flushQueueSize(20)
                .collectDeviceId(true)
                .trackApplicationLifecycleEvents();

    if (BuildConfig.DEBUG) {
        builder.logLevel(Analytics.LogLevel.VERBOSE);
    }

    Analytics analytics = builder.build();
    Analytics.setSingletonInstance(analytics);
}
import analytics from '@segment/analytics-react-native';
analytics.useNativeConfiguration();
于 2021-10-21T12:03:05.283 回答