首页 文章

userId的Firebase远程配置条件

提问于
浏览
7

我将Firebase集成到我的Android项目中,为不同的应用程序用户获取不同的参数值 . 我做了以下事情:

  • 在我的Firebase项目中设置用户
    enter image description here

  • 创建了与用户匹配的受众群体:
    enter image description here
    UID分别为 AAAAAAA...BBBBBBB... .

  • 在“远程配置”部分中创建了一个参数:
    enter image description here

  • 为此参数添加了条件:
    enter image description here
    并设置条件的值:
    enter image description here

  • 输入以下代码以从应用程序登录用户:

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 回答

  • 6

    经过一番调查后,我发现Firebase Analytics和Firebase身份验证是2个不同的模块,它们不会自动互连 .

    正如我所料,使用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());
    

    有些事情需要注意:

    • 一旦用户在 Spectator 中,它就永远不会退出 Spectator ,这意味着,如果您从同一设备更改应用中的用户,您将获得与2个 Spectator 的匹配:新 Spectator 和前一个 Spectator .

    • 在测试时我必须非常频繁地获取远程配置参数 . 虽然我将缓存过期设置为0,但我遇到了另一个问题:Firebase服务器在某个时候响应了限制异常 . 因此,虽然测试确保不要限制服务器,否则你将不得不在测试之间等待很长时间 .

    • 我不确定,但是Firebase Analytics使用与使用Firebase身份验证定义的ID不同的ID来跟踪应用用户的情况 . 我想,这就是为什么如果您从同一设备使用Firebase身份验证中的不同用户ID登录,您仍然可以匹配为之前的Firebase用户ID设置的受众群体 .

相关问题