Firebase - 使用userProperty的RemoteConfig返回默认值

时间:2017-10-24 19:52:11

标签: android firebase firebase-analytics firebase-remote-config

首先,我为我的英语道歉:-)我正在开展一个大项目,我在Android应用中遇到了使用Firebase的问题。我有使用Analytics用户属性的条件RemoteConfig。当我在app中设置用户属性,获取数据并成功完成后,我激活获取的数据,即使RemoteConfig条件为真,我仍然从RemoteConfig获取参数的默认值。代码写在Kotlin。

这是我的代码示例(此代码在类中的onCreate()方法中,它扩展了Appliaction类:

FirebaseAnalytics.getInstance(this).setUserProperty("testprop", "a");
FirebaseRemoteConfig.getInstance().fetch(0).addOnCompleteListener {
    if (it.isSuccessful) {
        FirebaseRemoteConfig.getInstance().activateFetched();
            val a = FirebaseRemoteConfig.getInstance().getString("test_param");
            Log.i("TOAPP", "Test param is $a");
        } else {
            Log.i("TOAPP", "Error: ${it.exception?.localizedMessage}");
            it.exception?.printStackTrace();
        }
    }
}

Firebase中的RemoteConfig:
参数= test_param
- MyUser =开发
- 默认值:=生产

条件:
MyUser - 如果User属性testprop与

完全匹配,则适用

当我运行时,我在控制台中得到这个:
I / TOAPP:测试参数是生产

我在gradle.build文件中有这些库:

// Play services
implementation "com.google.android.gms:play-services-location:11.4.2"
implementation "com.google.android.gms:play-services-maps:11.4.2"
implementation "com.google.android.gms:play-services-base:11.4.2"
implementation "com.google.android.gms:play-services-identity:11.4.2"
implementation "com.google.android.gms:play-services-places:11.4.2"

// Firebase
implementation "com.google.firebase:firebase-core:11.4.2"
implementation "com.google.firebase:firebase-config:11.4.2"
implementation "com.google.firebase:firebase-messaging:11.4.2"

感谢您的回答。

2 个答案:

答案 0 :(得分:0)

您的代码看起来是正确的。问题可能是时机问题。当您致电setUserProperty()时,需要一段时间才能将值报告给Firebase服务器,RemoteConfig可以使用该服务器。我不确切地知道延迟是什么,但可能长达一个小时。 Firebase Analytics会缓冲事件数据并不经常发送以减少电池使用量,如explained here

  

通常,您的应用记录的事件将在一起进行批处理   大约一个小时的时间并一起上传。这种方法   节省最终用户设备上的电池并减少网络数据   的使用。

用户属性可能以相同的方式处理。对于测试,您可以启用调试模式以最小延迟上传数据(在上面的链接中描述):

adb shell setprop debug.firebase.analytics.app <package_name>

我建议您启用调试模式,将代码运行到setUserProperty(),等待几分钟,然后运行代码以获取远程配置数据。当我使用该过程并使用版本11.4.2运行代码的Java等效代码时,它可以工作。

启用调试模式后,您可以使用Firebase控制台中的Analytics debug view确认您设置的用户属性值已上传到Firebase服务器。

答案 1 :(得分:0)

问题解决了!

在Firebase中,我有两个Andorid应用程序(旧的应用程序版本和新的应用程序版本)。旧的应用程序正常工作,但新的应用程序是问题。当我在Firebase Analytics中打开旧应用程序然后打开用户属性时,我在远程配置条件中使用了一些参数。当我在Firebase Analytics中将应用切换到新版本时,用户属性为空。我在Firebase Analytics中将旧应用版本中的相同属性添加到新应用版本,并且新应用正常运行。