在尝试了几天不同的方法之后,我们已经没有什么选择了。我们的目标是有一个到达原生应用程序,它可以打开/安装使用分支链接。用户的使用情况以及他们如何进入应用程序的数据(归属)最终被发送到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"美元;作为管道不同阶段的段匿名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();