バックグラウンド
Google は、 Firebase AnalyticsとFirebase Remote Configを使用して、A/B テスト用のまったく新しい API とサービスを公開しました。
問題
他の目的 (こことここ) でサービスを試していますが、A/B テストにも使用する必要があります。
問題は、実験のバリアントの結果を分析するために必要な情報を表示する方法を見つけることができないということです。
(このWebサイトで)表示されないか、適切な場所を見ていません:
私が試したこと
単一の実験を試すために、次のことを含めて、チュートリアルですべきことを行いました。
コードでの初期化は、サンプルとほぼ同じです。
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; }
}
テストごとに新しいユーザー プロパティを作成します (現時点では 1 つだけ)。
リモート設定画面で、2 つのバリアント (デフォルトと条件付き) を追加します。
チュートリアルに示されているように、リモート config をロードする際に setUserProperty (#0 を参照) を呼び出して、現在のバリアントのパラメーター値をポイントします。
イベントを追跡するために、次のように呼び出しました。
firebaseAnalytics.logEvent(eventName, new Bundle())
ご想像のとおり、呼び出しの 1 つ (今のところ 1 つだけ) は、 eventName が "subscription_premium_purchase" の場合です。
アプリを実行するときに、両方のバリアントを使用するようにしました (もちろん、クリーン インストールごとに 1 つです)。
しかし、私が示したように、たとえば、どのバリアントが他のバリアントよりも多くイベントを呼び出したのかを判断する方法を見つけることができません。
質問
ここで何が欠けている可能性がありますか?私は何を間違えましたか?使用したバリアントが表示されないのはなぜですか?
とにかく、ユーザープロパティは何ですか?Remote-Config と Analytics の間の「接着剤」として使用されますか? そこのテキストボックスに何を入力すればよいですか(「適用するには「Enter」を押してください」と表示されます)?さまざまなバリエーションを表示することを想定していませんか? 他のフィルター項目には「タイプ」がありますが、これにはありません。ユーザー プロパティから選択するものは何もありません。ユーザー プロパティを作成しても、その設定が表示されません (説明を除く)。消すこともできません。作成した条件をグラフで見る方法はありません。
おそらく、BigQuery を使用する必要がありますか?
「フェッチ」関数がリスナーをまったく呼び出さない場合があることに気付きました。どうしてですか?これにタイムアウトを追加できますか?