Firebase - RemoteConfig with userProperty returns 默认值
Firebase - RemoteConfig with userProperty returns default value
首先,我为我的英语道歉 :-) 我正在做一个大项目,我在我的 Android 应用程序中使用 Firebase 时遇到了问题。我有 RemoteConfig,条件是使用 Analytics 用户 属性。当我在应用程序中设置用户 属性 时,获取数据并成功完成后,我激活获取的数据,我仍然从 RemoteConfig 获取参数的默认值,即使 RemoteConfig 条件为真。代码是用 Kotlin 编写的。
这是我的代码示例(此代码在 class 的 onCreate() 方法中,它扩展了 Appliaction class:
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 中的远程配置:
参数 = test_param
- 我的用户 = 开发
- 默认值:=生产
条件:
MyUser - 如果用户 属性 testprop 与 a
完全匹配则适用
当我 运行 这个时,我在控制台中得到这个:
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"
感谢您的回答。
您的代码看起来是正确的。问题可能是时机。当您调用 setUserProperty()
时,该值需要一些时间才能报告给 RemoteConfig 可以使用的 Firebase 服务器。我不知道延迟到底是什么,但可能长达一个小时。 Firebase Analytics 缓冲事件数据并不经常发送它以减少电池使用,如 explained here:
Generally, events logged by your app are batched together over the
period of approximately one hour and uploaded together. This approach
conserves the battery on end users’ devices and reduces network data
usage.
很可能用户属性的处理方式相同。为了测试,您可以启用调试模式以最小延迟上传数据(如上文 link 所述):
adb shell setprop debug.firebase.analytics.app <package_name>
我建议您启用调试模式,运行代码到setUserProperty()
,等待几分钟,然后运行代码获取远程配置数据。当我使用该程序和 运行 相当于您的代码的 Java 版本 11.4.2 时,它起作用了。
启用调试模式后,您可以在 Firebase 控制台中使用 Analytics debug view 确认您设置的用户 属性 值已上传到 Firebase 服务器。
问题已解决!
在 Firebase 中,我有两个 Andorid 应用程序(旧应用程序版本和新应用程序版本)。旧应用程序运行正常,但新应用程序出现问题。当我在 Firebase Analytics 中打开旧应用程序然后打开用户属性时,我在远程配置条件中使用了一些参数。当我在 Firebase Analytics 中将应用程序切换到新版本时,用户属性为空。我在 Firebase Analytics 中将旧应用版本的相同属性添加到新应用版本,新应用运行正常。
首先,我为我的英语道歉 :-) 我正在做一个大项目,我在我的 Android 应用程序中使用 Firebase 时遇到了问题。我有 RemoteConfig,条件是使用 Analytics 用户 属性。当我在应用程序中设置用户 属性 时,获取数据并成功完成后,我激活获取的数据,我仍然从 RemoteConfig 获取参数的默认值,即使 RemoteConfig 条件为真。代码是用 Kotlin 编写的。
这是我的代码示例(此代码在 class 的 onCreate() 方法中,它扩展了 Appliaction class:
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 中的远程配置:
参数 = test_param
- 我的用户 = 开发
- 默认值:=生产
条件:
MyUser - 如果用户 属性 testprop 与 a
当我 运行 这个时,我在控制台中得到这个:
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"
感谢您的回答。
您的代码看起来是正确的。问题可能是时机。当您调用 setUserProperty()
时,该值需要一些时间才能报告给 RemoteConfig 可以使用的 Firebase 服务器。我不知道延迟到底是什么,但可能长达一个小时。 Firebase Analytics 缓冲事件数据并不经常发送它以减少电池使用,如 explained here:
Generally, events logged by your app are batched together over the period of approximately one hour and uploaded together. This approach conserves the battery on end users’ devices and reduces network data usage.
很可能用户属性的处理方式相同。为了测试,您可以启用调试模式以最小延迟上传数据(如上文 link 所述):
adb shell setprop debug.firebase.analytics.app <package_name>
我建议您启用调试模式,运行代码到setUserProperty()
,等待几分钟,然后运行代码获取远程配置数据。当我使用该程序和 运行 相当于您的代码的 Java 版本 11.4.2 时,它起作用了。
启用调试模式后,您可以在 Firebase 控制台中使用 Analytics debug view 确认您设置的用户 属性 值已上传到 Firebase 服务器。
问题已解决!
在 Firebase 中,我有两个 Andorid 应用程序(旧应用程序版本和新应用程序版本)。旧应用程序运行正常,但新应用程序出现问题。当我在 Firebase Analytics 中打开旧应用程序然后打开用户属性时,我在远程配置条件中使用了一些参数。当我在 Firebase Analytics 中将应用程序切换到新版本时,用户属性为空。我在 Firebase Analytics 中将旧应用版本的相同属性添加到新应用版本,新应用运行正常。