3

让这个基本的 Firebase RemoteConfig A/B 测试在 Android 上运行。我想获取在 Firebase 中配置的 A/B 测试的标题/名称和描述。获得变体的名称也很好(控制,变体A,...)

我如何获得这些数据?

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // bind XML elements into variables
        bindWidgets();

        // Only for debugging: get Instance ID token from device
        FirebaseInstanceId.getInstance().getInstanceId()
                .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
                    @Override
                    public void onComplete(@NonNull Task<InstanceIdResult> task) {
                        String deviceToken = task.getResult().getToken();
                        Log.wtf("Instance ID", deviceToken);
                    }
                });

        // Remote Config Setting
        FirebaseRemoteConfigSettings mFirebaseRemoteConfigSettings = new FirebaseRemoteConfigSettings
                .Builder()
                .setDeveloperModeEnabled(BuildConfig.DEBUG)
                .build();
        mFirebaseRemoteConfig.setConfigSettings(mFirebaseRemoteConfigSettings);

        // Remote Config with HashMap
        HashMap<String, Object> hashMap = new HashMap<>();
        hashMap.put("buttonColor", "#999999");
        mFirebaseRemoteConfig.setDefaults(hashMap);

        final Task<Void> fetch = mFirebaseRemoteConfig.fetch(FirebaseRemoteConfig.VALUE_SOURCE_STATIC);
        fetch.addOnSuccessListener(this, new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                mFirebaseRemoteConfig.activateFetched();

                // get value of key buttonColor from HashMap
                String buttonColor = mFirebaseRemoteConfig.getString("buttonColor");
                button.setBackgroundColor(Color.parseColor(buttonColor));
            }
        });

    }
4

2 回答 2

1

我们希望为我们的跟踪/分析工具获取这些信息。因此,我们实施了一个解决方法并添加了一个额外的远程配置变量abTestName_variantInfo,我们在 A/B-Testing 配置中设置了关于 A/B-Test 名称和我们正在运行的变体的简短信息。有了这个,我们可以使用用于变体更改(例如布局或功能)的主要远程配置变量,而不依赖于我们自己的命名约定进行跟踪。

例如,我们使用了两个远程配置变量ratingTest_variant(值:emojisstars)并添加了变量ratingTest_variantInfo(值:abTest_rating_emojisabTest_rating_stars)。

于 2020-03-09T08:58:34.760 回答
1

除了选择的变体之外,没有官方 API 可以检索有关您的 A/B 测试的任何信息。

硬编码应用程序中的值或手动将它们添加到 Firebase Hosting / Cloud Firestore 会容易得多。

话虽如此,这里有 2 个关于更自动解决方案的模糊想法,但我真的不建议尝试任何一个


大查询

您可以将您的项目链接到 BigQuery,然后它将包含您的 Analytics 数据。具体来说:

在此查询中,您的实验被编码为用户属性,其中实验名称在键中,实验变体在值中。

一旦您的数据在 BigQuery 中,您就可以使用 SDK 检索它。您当然需要处理权限和访问控制,这几乎可以肯定是极其矫枉过正的。


云功能(和托管)

另一种解决方案是将您需要的数据存储在其他地方,然后检索它。Firebase Cloud Functions 能够对新的远程配置做出反应(A/B 测试在后台使用这些配置)。所以你可以创建一个函数:

  • 在创建新的远程配置时触发。
  • 在 Cloud Firestore 或类似文件中存储parameter keyto等的映射。name

然后,您的应用程序可以查询此 Cloud Firestore/托管文件/您托管它的任何位置。

注意:我实际上无法弄清楚如何在 Cloud Functions 中获取有关远程配置的任何信息。版本名称、更新时间等信息可用,但description似乎含糊不清。

于 2019-12-28T15:09:50.800 回答