В проекте iOS мы решили включить функцию в качестве демонстрационного сценария только для некоторых пользователей из белого списка, чтобы реализовать это, после того как пользователь входит в приложение в LoginController, мы отправляем идентификатор пользователя в Firebase, используя эту * 1001.* и мы установили флаг удаленной конфигурации с несколькими условиями, при которых каждое условие проверяет определенный идентификатор пользователя, если он совпадает с идентификатором пользователя, отправляемым после процесса входа в Firebase, он возвращает true, в противном случае - false.Именно после отправки идентификатора пользователя в LoginController мы пытаемся извлечь флаг удаленной конфигурации
RCUtility.fetchAVFlagValue { result in
UserDefaults.standard.set(result, forKey: DefaultKeys.remoteConfigFlag)
}
, а вот класс RCUtility
class RCUtility {
static func fetchAVFlagValue(completion: @escaping (_ flag: Bool) -> Void) {
#if DEBUG
let fetchDuration: TimeInterval = 0
activateDebugMode()
#else
let fetchDuration: TimeInterval = 3600
#endif
let remoteConfig = RemoteConfig.remoteConfig()
remoteConfig.fetch(withExpirationDuration: fetchDuration) { _, error in
if let error = error {
print("Error fetching remote values: \(error)")
return
}
remoteConfig.activateFetched()
completion(remoteConfig
.configValue(forKey: "auto_vision_flag")
.boolValue)
}
}
static func activateDebugMode() {
let debugSettings = RemoteConfigSettings(developerModeEnabled: true)
RemoteConfig.remoteConfig().configSettings = debugSettings
}
}
проблема в том, что, пока я тестируюон находится в режиме отладки с интервалом времени 0
, он работает правильно, когда, например, я захожу в систему как пользователь из белого списка, я вижу эту особую функцию, и когда я выхожу из системы и захожу как другой пользователь, не входящий в белый список, я не вижу эту функцию, но когда мы публикуемЭто не происходит, если они входят в систему как хороший пользователь, сначала они видят функцию, но если они выходят из системы и снова входят в систему как плохой пользователь, они все равно могут видеть функцию, которую, как они полагают, нет!если они не ждут 1 час (указанный интервал времени, чтобы получить новое значение для флага) или если они удаляют приложение, переустанавливают его и снова входят в систему!Кажется, FB не возвращает обновленное значение, если эти два условия не выполнены.
Я уверен, что флаг установлен в Firebase правильно.
Я пробовал разные способы, такие как активация флага после выборки из FB или попытка сброса значения из UserDefaults после выхода пользователя из приложения или сохранения значения в константе вместо использования UserDefaults, но ни один из нихсработало, я не уверен, что так работает FB с флагом удаленной конфигурации, или я что-то упустил?
Версия Android не имеет этой проблемы с той же реализацией и тем же временным интервалом, и независимо от режима отладки, производственного режима или типа пользователя, они получают правильное значение каждый раз из Firebase без необходимости удалять и переустанавливатьприложение.