Истечение срока действия кеша Firebase всегда как в режиме отладки
Я пытаюсь реализовать Firebase Remote Config в своем приложении для iOS. Все работает нормально, но есть проблема - удаленный конфиг всегда выбирает данные с сервера Firebase, а не из кэша. Я перепробовал много вариантов без какого-либо успеха. Это мой код:
+ (instancetype)sharedInstance
{
static ConfigManager *_sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedInstance = [[self alloc] init];
});
return _sharedInstance;
}
-(instancetype)init
{
self = [super init];
if (self) {
self.remoteConfig = [FIRRemoteConfig remoteConfig];
[self updateRemoteConfig];
}
return self;
}
- (void)activateDebugMode
{
FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] initWithDeveloperModeEnabled:YES];
self.remoteConfig.configSettings = remoteConfigSettings;
}
- (void)updateRemoteConfig
{
[self fetchConfigWithCompletionHandler:nil];
}
- (void)fetchConfigWithCompletionHandler: (FireBaseConfigCompletionHandler)completionHandler
{
NSTimeInterval cacheExpiration = 43200;
BOOL debug = ConfigurationValue(DebugMode);
if (debug) {
cacheExpiration = 0;
[self activateDebugMode];
}
[self.remoteConfig fetchWithExpirationDuration:cacheExpiration completionHandler:^(FIRRemoteConfigFetchStatus status, NSError * _Nullable error) {
if (status == FIRRemoteConfigFetchStatusSuccess) {
NSLog(@"Config fetched!");
[self.remoteConfig activateFetched];
// do smth
} else {
NSLog(@"Config not fetched");
NSLog(@"Error %@", error.localizedDescription);
}
}];
}
Даже я использую fetchWithCompletionHandler без параметра cacheExpriration, он также не работает. Установка remoteConfigSettings в debugMode = FALSE также не работает. Я создал небольшое тестовое приложение с тем же кодом, и он работает! Единственное отличие, которое я вижу, это параметр "Включить модули" во встроенных настройках. Что я делаю неправильно? Заранее спасибо!
1 ответ
Извините, я не знаю, как читать код Objective C, но похоже, что когда ваше приложение работает в режиме отладки, для cacheExpiration установлено значение 0.
Когда cacheExpiration = 0, сеть будет работать по всем запросам. Это предназначено, чтобы помочь местным рабочим процессам развития. Я хотел бы предложить повторить этот код с большим значением cacheExpiration
Пожалуйста, смотрите https://firebase.google.com/docs/remote-config/android