and*_*per 5 android ab-testing firebase firebase-analytics
Google已使用Firebase Analytics和Firebase远程配置为A/B测试发布了全新的API和服务.
虽然我尝试将该服务用于其他目的(此处和此处),但我还需要将其用于A/B测试.
事实是,我无法找到如何让它显示分析实验变体结果所需的信息.
它只是没有显示(在这个网站上),或者我没有看到正确的地方:
为了尝试一个实验,我按照教程说我应该做的,包括:
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);
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
这是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;
}
Run Code Online (Sandbox Code Playgroud)
}
为每个实验创建一个新的用户属性(现在只有一个).
在远程配置屏幕中,添加2个变体(默认和条件).
加载远程配置后,调用setUserProperty(参见#0),如教程中所示,指向当前变量的参数值.
为了追踪一个事件,我打电话给:
firebaseAnalytics.logEvent(eventName, new Bundle())
Run Code Online (Sandbox Code Playgroud)
其中一个调用(现在只有一个),正如您可能已经猜到的那样,当eventName是"subscription_premium_purchase"时.
在运行应用程序时,我导致它使用两种变体(当然每个清洁安装一个).
但正如我所示,我无法找到一种方法来确定哪个变体导致事件被调用比另一个更多,例如.
这里可能缺少什么?我做错了什么?为什么我看不到我用过的任何变体?
无论如何,用户属性是什么?它是否被用作Remote-Config和Analytics之间的"粘合剂"?我应该在那里的文本框中输入什么(它说"按'输入'来申请")?它不是要显示各种变体吗?其他过滤器项目有"类型",但这个没有.用户属性没有什么可供选择的.即使在创建用户属性时,我也看不到它的任何设置(描述除外).我甚至无法删除它.无法查看我在图表中创建的条件.
我可能需要使用BigQuery吗?
我注意到"fetch"函数有时根本不会调用监听器.怎么会这样?我可以为此添加超时吗?
我认为这里的关键困惑与以下事实有关:当您选择实验用户属性时,您没有将您的值视为自动完成建议。这是一个正在考虑的功能。但是,如果您只是输入实验值,它会将其应用为报告中的过滤器,以便您可以查看一种变体与另一种变体中的用户记录了多少“subscription_premium_purchase”事件。
| 归档时间: |
|
| 查看次数: |
1846 次 |
| 最近记录: |