从Firebase Android获取值
我尝试从Firebase中的远程配置中获取特定值,但它总是提供我第一次在客户端定义的值 这是我的密码:从Firebase Android获取值,android,firebase,firebase-remote-config,Android,Firebase,Firebase Remote Config,我尝试从Firebase中的远程配置中获取特定值,但它总是提供我第一次在客户端定义的值 这是我的密码: public static final int DEFAULT_MSG_LENGTH_LIMIT = 1000; private static final String FRIENDLY_MSG_LENGTH_KEY ="friendly_msg_length"; protected void onCreate(Bundle savedInstanceState) { super.
public static final int DEFAULT_MSG_LENGTH_LIMIT = 1000;
private static final String FRIENDLY_MSG_LENGTH_KEY ="friendly_msg_length";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
.setDeveloperModeEnabled(BuildConfig.DEBUG).build();
mFirebaseRemoteConfig.setConfigSettings(configSettings);
Map<String, Object> defaultConfigMap = new HashMap<>();
defaultConfigMap.put(FRIENDLY_MSG_LENGTH_KEY, DEFAULT_MSG_LENGTH_LIMIT);
mFirebaseRemoteConfig.setDefaults(defaultConfigMap);
fetchCnfig();
}
private void fetchCnfig() {
long cacheExpiration = 3600;
if(mFirebaseRemoteConfig.getInfo().getConfigSettings().isDeveloperModeEnabled()){
cacheExpiration = 0;
}
mFirebaseRemoteConfig.fetch(cacheExpiration)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
mFirebaseRemoteConfig.activateFetched();
applyRetrievedLengthLimit();
}else{
Log.w(TAG, "error fetching config" + task.getException().getMessage());
applyRetrievedLengthLimit();
}
}
});
}
private void applyRetrievedLengthLimit() {
long friendly_msg_length = mFirebaseRemoteConfig.getLong(FRIENDLY_MSG_LENGTH_KEY);
mMessageEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(((int) friendly_msg_length))});
}
public static final int DEFAULT\u MSG\u LENGTH\u LIMIT=1000;
私有静态最终字符串友好\u MSG\u LENGTH\u KEY=“友好\u MSG\u LENGTH”;
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mFirebaseRemoteConfig=FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings=新的FirebaseRemoteConfigSettings.Builder()
.setdeveloperDeenabled(BuildConfig.DEBUG).build();
mFirebaseRemoteConfig.setConfigSettings(configSettings);
Map defaultConfigMap=新建HashMap();
defaultConfigMap.put(友好的消息长度键,默认消息长度限制);
mFirebaseRemoteConfig.setDefaults(defaultConfigMap);
fetchCnfig();
}
私有void fetchCnfig(){
长缓存过期=3600;
如果(mFirebaseRemoteConfig.getInfo().getConfigSettings().isDeveloperModeEnabled()){
cacheExpiration=0;
}
mFirebaseRemoteConfig.fetch(缓存过期)
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
mFirebaseRemoteConfig.activateFetched();
applyRetrievedLengthLimit();
}否则{
Log.w(标记“错误获取配置”+task.getException().getMessage());
applyRetrievedLengthLimit();
}
}
});
}
私有无效applyRetrievedLengthLimit(){
long-friendly\u-msg\u-length=mFirebaseRemoteConfig.getLong(friendly\u-msg\u-length\u键);
mMessageEditText.setFilters(新的InputFilter[]{new InputFilter.LengthFilter(((int)friendly_msg_length)));
}
任何可能出错的想法都将在更新值后进行评估,您需要从firebase控制台发布更改
发布更改后,最终用户可以使用它,您可以在应用程序中获取该值。我的错误是我在firebase项目中输入了FRIENDLY_MSG_LENGTH_键值,并且我必须输入该属性的值(在我的例子中为FRIENDLY_MSG_LENGTH)
希望它能对大家有所帮助:)这已经完成,但仍然不会更改从firebase收到的值