在debuggin或debug发行版中,不跟踪android mixpanel事件的最佳方法是什么?

在debuggin或debug发行版中,不跟踪android mixpanel事件的最佳方法是什么?,android,coding-style,solid-principles,mixpanel,Android,Coding Style,Solid Principles,Mixpanel,我的应用程序使用mixpanel跟踪信息,但跟踪所有内容。所以当我测试或调试时,它也会跟踪。我想知道在每个mixpanel调用中是否有比这更好的干净/最好的方法来禁用跟踪: if (!BuildConfig.DEBUG) { // track events } 我处理这个问题的方法是为我的本地/dev实例创建一个不同的项目。这样我就可以跟踪事件而不会弄乱生产数据 我使用的是php sdk,但您可以执行类似的操作: public function loadMixPanel() { $

我的应用程序使用mixpanel跟踪信息,但跟踪所有内容。所以当我测试或调试时,它也会跟踪。我想知道在每个mixpanel调用中是否有比这更好的干净/最好的方法来禁用跟踪:

if (!BuildConfig.DEBUG) {
  // track events
}

我处理这个问题的方法是为我的本地/dev实例创建一个不同的项目。这样我就可以跟踪事件而不会弄乱生产数据

我使用的是php sdk,但您可以执行类似的操作:

public function loadMixPanel() {
    $token = "PRODUCTION TOKEN";
    if ($this->instance !== 'PRODUCTION') {
        $token = "TEST TOKEN";
    }
    $this->mixpanel = Mixpanel::getInstance($token);
}

最后,我在类上创建了最后一个字符串,将属性发送到Mixpanel,如下所示:

private static final String MIXPANEL_PROP_BUILD_TYPE = (BuildConfig.DEBUG) ? "DEBUG_MODE" : "RELEASE_MODE";
我总是将这个附加到JSON的属性发送到MIXPANEL:

props.put(MIXPANEL_PROP_BUILD, MIXPANEL_PROP_BUILD_TYPE);

在mixpanel中,我可以按此属性进行筛选

我正在使用mixpanel跟踪android应用程序中的事件。为了分别跟踪debug和release应用程序中的事件,我为我们的应用程序的debug和release版本创建了不同的BuildType,通过它我可以为debug和release应用程序指定不同的android软件包名称。在mixpanel中,我有两个用于这两个应用程序的项目。此外,由于它只更改android包而不更改java包,所以代码保持不变。您只需要选择构建变量(调试或发布)。另一个优点是,你可以在手机上同时使用这两个应用,因为它们都有不同的软件包名称。下面是相同的gradle配置示例

buildTypes {
    debug {
        applicationIdSuffix ".debug"
        resValue "string", "app_name", "Debug"

        buildConfigField "String", "MIXPANEL_PROJECT_TOKEN", '"asdaskjdaksdjksdhkashd"'
    }
    release {
        debuggable true
        minifyEnabled false
        resValue "string", "app_name", "Release"

        buildConfigField "String", "MIXPANEL_PROJECT_TOKEN", '"asfksfkabfabsmabsmbasd"'
    }
}

您可以使用
BuildConfig.mixpanel\u PROJECT\u token
获取mixpanel令牌,以初始化活动内部的mixpanel

BuildConfig.DEBUG对我不起作用,我不想更改构建类型,因此我使用类似于下面的方法。这是可能的,因为我在发布apk时使用proguard

希望这有帮助

private static Boolean DEBUG = null;
public static boolean isDebug()
{
    // yes, it's insane but...
    if (DEBUG == null) DEBUG = MyBeautifulClassName.class.getSimpleName().contains("MyBeautifulClassName");
    return DEBUG;
}

我将为MixPanel跟踪方法创建静态包装器方法,这些方法决定是否像代码片段一样跟踪事件。