我正在使用Firebase的RemoteConfig
框架。
从Firebase服务器获取数据工作正常(已在生产中工作),但设置默认值似乎不起作用。我试图坚持文档,但也许我做错了。
为了测试这个,我做了以下事情:
[self.remoteConfig setDefaults:@{@"key1": @"value1"}];
然后,在Firebase Console
我设置参数key1
中,使默认No Value
向客户端发送零数据。我没有定义任何其他条件,因此这是唯一要发送的值。根据{{3}},RemoteConfig
对象应该在这种情况下选择默认值。
获取代码:
[self.remoteConfig fetchWithExpirationDuration:self.configurationExpirationDuration
completionHandler:^(FIRRemoteConfigFetchStatus status,
NSError * _Nullable error) {
if (status == FIRRemoteConfigFetchStatusSuccess) {
[self.remoteConfig activateFetched];
FIRRemoteConfigValue *remoteValue1 = [self.remoteConfig configValueForKey:@"key1"];
NSString *value1 = remoteValue1.stringValue;
// Logic comes here
} else {
LogError(@"Error fetching remote configuration from Firebase: %@", error);
}
remoteValue1
不是nil
。
value1
是nil
。
remoteValue1.dataValue
是_NSZeroData
。
此外,当我尝试使用
时[self.remoteConfig defaultValueForKey:@"key1" namespace:nil]
我得到nil
值(假设将nil
发送到namespace
参数将为我提供默认的命名空间默认值。)
我在这里做错了吗?
答案 0 :(得分:4)
configValueForKey:
方法首先检查从Firebase服务器获取结果,如果结果存在,则返回远程结果而不是默认值。
所以key1值应该是你在控制台中设置的值,nil
(没有值)。
当您致电defaultVaueForKey:namespace:
时,您应始终使用默认名称空间FIRNamespaceGoogleMobilePlatform
。使用nil
将不会返回任何有效的配置结果。