Истечение срока действия кеша 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

Другие вопросы по тегам