用户 ID 的 Firebase 远程配置条件

Posted

技术标签:

【中文标题】用户 ID 的 Firebase 远程配置条件【英文标题】:Firebase remote config condition by userId 【发布时间】:2016-12-25 03:17:13 【问题描述】:

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

    在我的 Firebase 项目中设置用户 创建了与用户匹配的受众: UID 为 AAAAAAA...BBBBBBB... 相应地。 在远程配置部分创建了一个参数: 为该参数添加条件: 并为条件设置值:

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

    任务结果Task =
        firebaseAuth.signInWithEmailAndPassword("test1@gmail.com", 密码);
    确保登录成功。 然后我尝试获取远程配置参数:
    firebaseRemoteConfig.fetch()
                    .addOnCompleteListener(新 OnCompleteListener() 
                        @覆盖
                        public void onComplete(@NonNull Task task) 
                            if (task.isSuccessful()) 
                                // 一旦配置成功获取,它必须在新获取之前激活
                                // 值被返回。
                                firebaseRemoteConfig.activateFetched();
                                Log.d(TAG, firebaseRemoteConfig.getString("MyParameter"));
                             别的 
                                Log.d(TAG, "获取 Firebase 远程配置失败。原因 = " + task.getException());
                            
                        
                    );

结果我总是得到默认值:DefaultValue

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

【问题讨论】:

【参考方案1】:

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

使用 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());

注意事项:

    一旦用户进入受众群体,就永远无法退出受众群体,这意味着,如果您在同一设备上更改应用程序中的用户,您将匹配到 2 个受众群体:新受众群体和之前的受众群体. 在测试这个时,我不得不非常频繁地获取远程配置参数。虽然我将缓存过期时间设置为 0,但我遇到了不同的问题:Firebase 服务器有时会响应限制异常。因此,在测试时请确保不要限制服务器,否则您将不得不在两次测试之间等待很长时间。 我不确定,但 Firebase Analytics 使用与 Firebase 身份验证定义的 ID 不同的 ID 跟踪应用程序用户似乎是接缝。我认为,这就是为什么如果您在同一设备上使用不同的用户 ID 在 Firebase 身份验证中登录,您仍然可以匹配为之前的 Firebase 用户 ID 设置的受众。

【讨论】:

用户是否必须登录才能让分析识别其唯一 ID? @IgorGanapolsky:是的,需要登录,因此 Firebase 会记录唯一 ID。 通过身份验证用户 ID 识别 Analytics 数据可能会与电子邮件地址和人口统计数据等个人身份数据相关联,这可能违反条款和隐私准则。现在可以创建动态用户组,因此它们不再是观众的永久住所。

以上是关于用户 ID 的 Firebase 远程配置条件的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 远程配置:关于百分位条件的“应用实例”的定义是啥?

Firebase 远程配置:Unity 项目的版本条件已禁用

Firebase 远程配置在更新时强制刷新

在 iOS 应用中使用远程配置 Firebase

我可以使用 Firebase 远程配置来更新 Android 应用的 strings.xml 吗?

在没有应用程序互联网的情况下启动时无法读取本地 Firebase 远程配置 plist