1

我在我们的 Android 应用程序上进行 Firebase A/B 测试时遇到了一些问题。似乎“实验中的用户”计数比应该在所述实验中的实际用户数量低约 5 倍。实验在推出前开始并运行了一周多,但进入它的用户数量仍然远低于此后访问该应用的唯一用户数量。该实验对 100% 符合条件的用户开放,未设置任何条件或激活事件。(我正在交叉引用来自 a/b 仪表板和谷歌分析的数据)

一些有用的信息:

在我们的 android 应用中远程配置的初始化代码

    public void initRemoteConfig(){
    // Initialize Firebase Remote Config.
    FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig.getInstance();

    // Define Firebase Remote Config Settings.
    FirebaseRemoteConfigSettings firebaseRemoteConfigSettings =
            new FirebaseRemoteConfigSettings.Builder()
                    .build();

    // Apply config settings and default values.
    remoteConfig.setConfigSettings(firebaseRemoteConfigSettings);
    remoteConfig.setDefaultsAsync(RemoteConfigHelper.getDefaultValuesMap()).addOnCompleteListener(task -> {
        long cacheExpiration = DateUtils.DAY_IN_MILLIS;
        // If in debug on testing inside the office reduce cacheExpiration to 0
        // so that each fetch goes to the server. This should not be used in release builds.
        if (Tools.DEBUG || MetaDataHelper.getInstance(this).getSetting(R.string.in_office).equals(AppConsts.TRUE)) {
            cacheExpiration = 0;
        }

        remoteConfig.fetch(cacheExpiration)
                .addOnSuccessListener(aVoid -> {
                    // Make the fetched config available via
                    // FirebaseRemoteConfig get<type> calls.
                    remoteConfig.activate();
                    RemoteConfigHelper.isVideoAdUser = FirebaseRemoteConfig.getInstance().getBoolean(SHOW_VIDEO_AD_OVERVIEW);
                    RemoteConfigHelper.logRemoteValues();
                })
                .addOnFailureListener(e -> {
                    Crashlytics.setString(CALLBACK,"remote config fetch failed");
                    Crashlytics.logException(e);
                    // There has been an error fetching the config
                });
    });
    Loger.d(TAG, "Remote instance ID token: " + getPrefString(R.string.pref_notification_reg_id,""));
}

我们还在 crashlytics 上收到 FirebaseRemoteConfigServerException,完整日志:

Non-fatal Exception: com.google.firebase.remoteconfig.FirebaseRemoteConfigServerException
Fetch failed: The user is not authorized to access the project. Please make sure you are using the API key that corresponds to your Firebase project.
com.google.firebase.remoteconfig.internal.ConfigFetchHandler.createExceptionWithGenericMessage

(收到此异常的用户数量不足以解释问题)

  1. 知道为什么会这样吗?我们的 a/b 测试有点用处,除非我们将更多用户带入实验。
  2. 一般来说,使用不稳定的firebase用户属性作为实验条件是个好主意吗?(即:用户偏好语言的条件实验)

提前致谢 :)

4

2 回答 2

0

更新 Firebase SDK 依赖项时我遇到了同样的问题:403 Forbidden

我找到了描述问题的自述文件;它对我有用。

于 2020-03-04T12:42:17.573 回答
0

抱歉,这个问题具有误导性,当 fetch 方法需要它以秒为单位时,我输入了以毫秒为单位的 fetch 间隔时间。

于 2021-11-30T14:52:52.940 回答