如何正确使用Firebase-Analytcs进行A / B测试?

时间:2016-06-22 07:36:16

标签: android firebase ab-testing firebase-analytics

背景

Google已使用Firebase AnalyticsFirebase Remote Config发布了一个全新的A / B测试API和服务。

问题

虽然我尝试将该服务用于其他目的(herehere),但我还需要将其用于A / B测试。

事实是,我无法找到如何让它显示分析实验变体结果所需的信息。

它没有显示(在this website上),或者我没有看到正确的地方:

enter image description here

我尝试了什么

为了尝试单个实验,我按照教程说我应该做的,包括:

  1. 代码中的初始化与the samples中的初始化大致相同:

    boolean isDebug = AppComponentsHelper.isInDebugFlavour(context);
    mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
    FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder().setDeveloperModeEnabled(isDebug).build();
    mFirebaseRemoteConfig.setConfigSettings(configSettings);
    final HashMap<String, Object> defaults = new HashMap<>();
    for (ExperimentType experimentType : ExperimentType.values())
        defaults.put(experimentType.experimentId, experimentType.defaultValues);
    mFirebaseRemoteConfig.setDefaults(defaults);
    
    long cacheExpiration = isDebug ? 0 : TimeUnit.HOURS.toSeconds(1);
    mFirebaseRemoteConfig.fetch(cacheExpiration)
            .addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if (task.isSuccessful()) {
                        mFirebaseRemoteConfig.activateFetched();
                        final FirebaseAnalytics firebaseAnalytics = FirebaseAnalytics.getInstance(context);
                        for (ExperimentType experimentType : ExperimentType.values()) {
                            String experimentVariant = FirebaseRemoteConfig.getInstance().getString(experimentType.experimentId);
                            firebaseAnalytics.setUserProperty(experimentType.userProperty, experimentVariant);
                        }
                    }
                }
            });
    

    这是ExperimentType的枚举:

    public enum ExperimentType {
      PURCHASES_OFFERED_PRODUCTS("purchases_offered_products_1", "Experiment1", new Gson().toJson(new String[]{"something", "something2"}));
    
      public final String experimentId,defaultValues,userProperty;
    
      ExperimentType(final String experimentId, final String userProperty, final String defaultValues) {
          this.experimentId = experimentId;
          this.defaultValues = defaultValues;
          this.userProperty = userProperty;
      }
    

    }

  2. 为每个实验创建一个新的用户属性(目前只有一个)。

  3. 在远程配置屏幕中,添加2个变体(默认和条件)。

  4. 加载远程配置后,调用setUserProperty(参见#0),如the tutorial所示,指向当前变量的参数值。

  5. 为了跟踪事件,我打电话给:

    firebaseAnalytics.logEvent(eventName, new Bundle())
    

    其中一个调用(现在只有一个调用),您可能已经猜到了eventName是“subscription_premium_purchase”。

  6. 在运行应用程序时,我使它同时使用两种变体(当然,每种变体都有一种变体)。

  7. 但正如我所示,我无法找到一种方法来确定哪个变体导致事件被调用的次数多于另一个,例如。

    问题

    1. 这里可能缺少什么?我做错了什么?为什么我看不到我用过的任何变体?

    2. 无论如何,用户属性是什么?它是否被用作Remote-Config和Analytics之间的“粘合剂”?我应该在那里的文本框中输入什么(它说“按'输入'来申请”)?它不是要显示各种变体吗?其他过滤器项目有“类型”,但这个没有。用户属性没有什么可供选择的。即使在创建用户属性时,我也看不到它的任何设置(描述除外)。我甚至无法删除它。无法查看我在图表中创建的条件。

    3. 我是否需要使用BigQuery?

    4. 我注意到“fetch”函数有时根本不会调用侦听器。怎么会这样?我可以为此添加超时吗?

1 个答案:

答案 0 :(得分:0)

我认为这里的关键混淆与您在选择“实验”用户属性时未将自己的值视为自动完成建议这一事实有关。这是一个正在考虑的功能。但是,如果您只输入实验值,则会将其作为报告的过滤器应用,以便您可以查看一个变体中的用户与另一个变体中记录了多少“subscription_premium_purchase”事件。