Я использую Firebase Remote Config с Firebase A / B Testing на iOS.
Я вижу значение, полученное от Remote Config, иногда сбрасывается до значения по умолчанию.
Я думаю, что активированные значения конфигурации не удаляются, даже если срок действия серверного кэша в приложении истек.
Есть ли ситуации, когда активированные значения возвращаются к значению по умолчанию?
- In-App: значение по умолчанию
A
установлено.
- Получить -> Активировать
- Получил
B
с сервера.
- Выйти из приложений.
- Через несколько часов я возвращаюсь к приложению, кажется, значение сброшено на
A
.
получить и активировать стратегию
Приложение активирует значения удаленной конфигурации один раз во время запуска.
Когда ваш пользователь запускает ваше приложение, вы немедленно вызываете activFetched (). Это будет применять любые старые значения, которые вы ранее извлекли из облака. И тогда ваш пользователь может сразу же начать взаимодействовать с вашим приложением. Тем временем вы запускаете асинхронный вызов fetch () для получения новых значений из облака. И в обработчике завершения для этого вызова ... вы ничего не делаете. Черт возьми, вам даже не нужно добавлять обработчик завершения. Те значения, которые вы извлекли из облака, будут храниться локально на устройстве, пока ваш пользователь не вызовет activFetched при следующем запуске вашего приложения.
ABTesting Settings
- целевой пользователь: 100% приложения
- вариант-ключ ->
SOME_KEY
- Контрольная группа: 50% -> значение =
A
- Вариант B: 50% -> значение =
B
Версии стручков от Podfile.lock
:
- FirebaseABTesting (2.0.0):
- FirebaseRemoteConfig (3.1.0):
Как установить значения по умолчанию, получить значения
Значение по умолчанию:
RemoteConfig.remoteConfig().setDefaults(["SOME_KEY": "A"])
Чтобы получить значение из Remote Config:
let value = RemoteConfig.remoteConfig().configValue(forKey: "SOME_KEY")
Последовательности запуска приложения
- При первом запуске приложения
activateFetched()
- получил значение
A
(= по умолчанию).
- Извлеченного значения пока нет,
activateFetched
не действует.
- , затем получить.
- при следующем запуске приложения
activateFetched()
- полученное значение
B
(если пользователь выбрал значение ABTestring 'B')
- затем принеси.
- при следующем запуске приложения
activateFetched()
- получил значение
A
(это проблема)
- , затем получить.
В вышеуказанной ситуации, если приложение получило и активировало значение B
,
значение сохраняется в кеше активированных значений и
кэшированное значение не сбрасывается до A
Я думал.
Верно ли предположение?
Дополнительная информация
Когда приложение получило B
от configValue(forKey: "SOME_KEY")
затем remoteConfig.allKeys(from: .remote, namespace: NamespaceGoogleMobilePlatform)
возвращает ["SOME_KEY"]
.
Но когда приложение вернуло A
из 'B' (последняя ситуация в последовательности запуска выше),
затем remoteConfig.allKeys(from: .remote, namespace: NamespaceGoogleMobilePlatform)
возвращается пустым.