当前位置: 首页 > 知识库问答 >
问题:

Firebase远程配置条件(按用户ID)

越英范
2023-03-14

我将Firebase集成到我的Android项目中,为不同的应用程序用户获得不同的参数值。我做了以下工作:

Task resultTask =   
    firebaseAuth.signInWithEmailAndPassword("test1@gmail.com", password);
firebaseRemoteConfig.fetch() 
                .addOnCompleteListener(new OnCompleteListener() {
                    @Override
                    public void onComplete(@NonNull Task task) {
                        if (task.isSuccessful()) {
                            // Once the config is successfully fetched it must be activated before newly fetched
                            // values are returned.
                            firebaseRemoteConfig.activateFetched();
                            Log.d(TAG, firebaseRemoteConfig.getString("MyParameter"));
                        } else {
                            Log.d(TAG, "fetch firebase remote config failed. Reason = " + task.getException());
                        }
                    }
                });

结果总是得到默认值:DefaultValue

我做错了什么?我错过了什么?

共有1个答案

陈松
2023-03-14

经过一些调查,我认为Firebase Analytics和Firebase Authentication是两个不同的模块,它们不会自动互连。

使用Firebase身份验证并没有像我预期的那样自动将用户识别为特定受众的一部分。

我需要告诉Firebase Analytics,当前用户具有特定的用户ID,因此它可以将其匹配到相关的受众。我向登录onComplete回调添加了以下代码:

Task<AuthResult> resultTask =   
    firebaseAuth.signInWithEmailAndPassword("test1@gmail.com", password); 
resultTask.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            // Task completed successfully
            if (task.isSuccessful()) {
               firebaseAnalytics.setUserId(task.getResult().getUser().getUid());
            } else {
                Log.d(TAG, "signInWithEmail firebase failed");
            }
        }
    });
firebaseAnalytics.setUserId(task.getResult().getUser().getUid());

一些需要注意的事情:

  1. 一旦用户处于访问群体中,就永远无法退出访问群体,这意味着,如果您将应用程序中的用户从同一设备中更改,您将获得与两个访问群体的匹配:新访问群体和前一个访问群体。
  2. 在测试时,我必须频繁地获取远程配置参数。虽然我将缓存过期设置为0,但我遇到了一个不同的问题:Firebase服务器有时会响应节流异常。因此,在进行测试时,请确保不要限制服务器,否则您将不得不在两次测试之间等待很长时间。
  3. 我不太确定,但Firebase Analytics跟踪的应用程序用户的id与Firebase Authentication定义的id不同。我认为,这就是为什么如果您在Firebase身份验证中使用不同的用户id从同一设备登录,您仍然与为以前的Firebase用户id设置的访问群体相匹配。
 类似资料:
  • 我正在处理Firebase Remote Config,想知道当您对Firebase参数有重叠的条件时,在幕后会发生什么。例如,假设我对一个参数有两个条件: 如果用户在Android设备上,则返回true。 如果用户使用的是Android设备,并且该设备是Samsung设备,则返回false。 如果用户是从三星设备查询,那么Firebase会为这个参数返回什么?大概,这将取决于Firebase首先

  • 我正在尝试设置Firebase远程配置。在我的项目中一个重要的部分是正确的定位。所以我在Console中设置了不同语言的条件。但现在我想将默认值设为XML。github上的示例非常简单。没有任何条件的值就很少。文档根本没有描述这种格式。所以我想知道是否可以在defaults.xml中指定我的所有本地化,以及我如何做到这一点。

  • 我有一个用户属性:Max_Level_Completed表示用户完成的最大级别。我将其用作远程配置Firebase的一个条件:Max_Level_Completed>=10个用户拥有Max_Level_Completed>=10个将会出售。 但是当用户的Max_Level_Completed>=10时,我仍然无法为这些用户获取新的配置。如果我清除应用程序数据,我可以获取新的配置。 这里有什么问题?

  • 我正在应用程序中使用firebase remote-config。我有两个参数message1和message2,如下图所示。语言条件也可以在图像中看到(它用于阿拉伯语和法语)。 用户可以在应用程序开始时选择应用程序语言(单独的活动),这是我用来更改语言的代码: 这是我用来从FireBase获取数据的代码:

  • Firebase远程配置有其他选择吗?我需要为中国市场提供一个应用程序,我不确定它是否会起作用