我有一个 Android 应用程序并使用远程配置。
我有这个用例,我想在该请求中发送应用程序语言更改。我的应用程序支持英语和越南语,用户可以选择他们的首选语言。我只是在测试更改为越南语。
但是,在请求中它始终使用我的系统设备语言。由于它始终设置为英语,因此它始终发送 en-US。
在我的 Firebase 远程配置控制台中,我有一个字段具有英语和越南语的语言条件。因此,根据该条件,我可以在应用程序中执行某些操作。
class FetchRemoteConfigUseCase @Inject constructor(
private val remoteConfigProvider: RemoteConfigProvider,
private val firebaseRemoteConfigSettings: FirebaseRemoteConfigSettings,
private val schedulersFacade: SchedulersFacade
) {
fun execute(): Completable {
return Completable.create { completable ->
remoteConfigProvider
.remoteConfig
.setConfigSettingsAsync(firebaseRemoteConfigSettings)
.continueWithTask {
remoteConfigProvider.remoteConfig.setDefaultsAsync(mapOf("languageCode" to "vi-VN"))
remoteConfigProvider.remoteConfig.fetchAndActivate()
}
.addOnCompleteListener {
completable.onComplete()
}
}.observeOn(schedulersFacade.io)
}
}
当我在 charles proxy 中检查请求时,我只能看到 en-US。
{
"appInstanceId": "app instance Id"",
"appVersion": "4.0.0",
"countryCode": "US",
"analyticsUserProperties": {
"current_cluster": "cluster"
},
"appId": "app Id"",
"platformVersion": "30",
"timeZone": "Asia\/Vietnam",
"sdkVersion": "21.0.2",
"packageName": "package name",
"languageCode": "en-US",
"appBuild": "140"
}
我想知道如何发送上面的语言代码。
只是一个附带问题,firebase 如何知道在哪里提取这些属性并将它们发送到请求中?
要根据应用中的用户选择将语言代码发送到 Firebase Remote Config:
EG
val userLanguage = sharedPreferences.getString("user_language", "en-US")
remoteConfig.setDefaultsAsync(mapOf("languageCode" to userLanguage))
remoteConfig.fetchAndActivate()
Firebase 通过集成 SDK 自动收集应用版本和设备信息等标准详细信息。当您手动设置其他属性(例如 languageCode)时,Firebase 会将这些属性包含在服务器请求中,从而帮助根据您的远程配置设置确定要返回的适当配置。
您还可以查看他们的文档