首先,我为我的英语道歉:-)我正在开展一个大项目,我在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"
感谢您的回答。
答案 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中将旧应用版本中的相同属性添加到新应用版本,并且新应用正常运行。