我如何正确配置段,Mixpanel和分支为一个React Native应用程序?



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

关键的挑战是获得由Branch确定的属性数据,将其应用于Mixpanel中与一般应用程序使用相同的独特ID。

。查看文章123的事件;分配给用户ABC,而事件来自同一个人,在同一部手机上,在同一会话期间,说"通过二维码打开的App";(这些事件名称只是说明性的,上下文实际上在元数据中)

到目前为止,我已经尝试了使用

的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]
});

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

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());

在实验这些本地设置时(在几个不同的排列中),我们调用了分段useNativeConfiguration方法。

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

  • 段→MP AND Branch ->议员
  • 段→MP AND Segment ->分支→议员
  • 段→MP AND Segment <->分支→MP(注意分支同时导入和导出段数据)
  • 段→分支→议员

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

最新云配置"Segment ->分支→,显示了最大的希望,但是即使文档说Identify调用被传递给Branch,在调试时它们不是。这意味着用户的配置文件永远不能在Mixpanel中填充。

如能提供任何帮助,我将不胜感激。

好的,我们认为我们已经用上述技术以一种可接受的方式工作了。

我们最终的设置是在本地级别初始化Analytics (Segment)和Branch。设置$mixpanel_distinct_id"one_answers"segment_anonymous_id&quot美元;作为管道不同阶段的段匿名ID。切断分部和分部之间的联系。所以最后我们得到了以下两条路径:

  • 应用程序→段→li>应用程序→分支→/ul>由于Mixpanel中只有来自Branch(前缀为[Branch])的事件才具有用户属性,因此我们设置了Lambda函数来读取这些事件,然后调用Mixpanel API来设置UTM媒体,活动和渠道的用户属性。为了实现连接,我们必须重新连接Branch以使用完全独立的源将事件导出到Segment,然后将其发送到Lambda作为目的地。比如:

    • 分支→λ→/ul>代码片段:

      // 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();
      

相关内容