Справочник по условным выражениям Remote Config

Эта страница содержит справочную информацию по построению условных выражений с использованием API-интерфейсов Remote Config backend или консоли Firebase . Для получения дополнительной информации о настройке и использовании API-интерфейсов backend см. Modify Remote Config programmatically .

Элементы, используемые для создания условий

REST API Remote Config поддерживает те же элементы, которые можно использовать для создания условий при настройке Remote Config с помощью Firebase Console:

Элемент Описание
&&

Используется для создания логического "и" элементов, если для условия используется более одного элемента. Если элемент используется в синтаксисе REST без && , этот элемент рассматривается как условие.

Примечание: пробел обязателен до и после амперсандов. Например: element1 && element2 .

app.build

Оценивается как TRUE или FALSE на основе значения номера сборки приложения.

Примечание: доступно только на устройствах Apple и Android. Для Apple используйте значение CFBundleVersion , а для Android используйте значение versionCode .

app.version

Оценивается как TRUE или FALSE на основе значения номера версии приложения.

Примечание: для устройств Android используйте значение versionName , а для устройств Apple используйте значение CFBundleShortVersionString .

app.id Элемент, основанный на идентификаторе приложения Firebase
app.audiences Элемент, который оценивается как TRUE или FALSE в зависимости от присутствия или отсутствия пользователя в одной или нескольких аудиториях Firebase Analytics .
app.firstOpenTimestamp Элемент, основанный на первом запуске пользователем приложения, полученный из события first_open Google Analytics . Использует формат даты ISO с возможностью указания фиксированного часового пояса; например, app.firstOpenTimestamp >= ('2022-10-31T14:37:47', 'America/Los_Angeles') . Если часовой пояс не указан, используется GMT.
app.userProperty Элемент, который оценивается как TRUE или FALSE на основе числового или строкового значения свойства пользователя Google Analytics .
app.operatingSystemAndVersion

Элемент, основанный на операционной системе, на которой работает приложение. Возвращает значение TRUE , когда ОС и версия ОС соответствуют указанной цели.

Примечание: доступно только для веб-приложений.

app.browserAndVersion

Элемент, основанный на браузере, в котором запущено приложение. Оценивается как TRUE , когда браузер и версия браузера соответствуют указанной цели.

Примечание: доступно только для веб-приложений.

app.firebaseInstallationId Элемент, основанный на идентификаторах конкретных установок устройств. Возвращает значение TRUE , если идентификатор установки совпадает с одним из указанных идентификаторов установки.
app.customSignal Элемент, который оценивается как TRUE или FALSE на основе числового, семантического или строкового значения пользовательских условий сигнала .
device.country Элемент, основанный на регионе/стране, в которой находится устройство, с использованием стандарта ISO 3166-1 alpha-2 (например, США или Великобритания). Возвращает значение TRUE , если страна соответствует ожидаемому коду страны.
device.dateTime Элемент, основанный на времени последней выборки, выполняемой устройством. Использует формат даты ISO с возможностью указания фиксированного часового пояса; например, dateTime('2017-03-22T13:39:44', 'America/Los_Angeles') .
device.language Элемент, основанный на языке, выбранном на устройстве. Язык представлен с помощью тега языка IETF, например es-ES, pt-BR или en-US. Возвращает значение TRUE , если язык соответствует ожидаемому коду языка.
device.os Элемент, основанный на операционной системе, используемой на устройстве (Apple или Android). Возвращает значение TRUE , когда ОС устройства соответствует ожидаемому типу.
percent Оценивается как TRUE на основе включения пользователя в случайно назначенный дробный процент (с размерами выборки не менее 0,000001%).

Одноэлементное условие содержит три поля:

  1. Произвольно определенное name (до 100 символов)
  2. Условное выражение, которое принимает значение TRUE или FALSE и состоит из элементов, показанных выше.
  3. (Необязательно) tagColor , который может быть " BLUE ", " BROWN ", " CYAN ", " DEEP_ORANGE ", " GREEN ", " INDIGO ", " LIME ", " ORANGE ", " PINK ", " PURPLE " или " TEAL ". Цвет нечувствителен к регистру и влияет только на то, как условия отображаются в консоли Firebase .

Поддерживаемые операторы

Например, app.build.notContains([123, 456]) возвращает TRUE , если фактическая сборка приложения — 123 или 492, но возвращает FALSE если фактическая сборка приложения — 999. Например, app.version.notContains([123, 456]) возвращает TRUE , если фактическая версия приложения — 123 или 492, но возвращает FALSE если фактическая версия приложения — 999.
Элемент Поддерживаемые операторы Описание
app.audiences .inAtLeastOne([...]) Возвращает значение TRUE если фактическая аудитория соответствует хотя бы одному названию аудитории в списке.
Например:

app.audiences.inAtLeastOne(['Audience 1', 'Audience 2'])

app.audiences .notInAtLeastOne([...]) Возвращает значение TRUE , если фактическая аудитория не соответствует хотя бы одному названию аудитории в списке.
app.audiences .inAll([...]) Возвращает значение TRUE , если фактическая аудитория является членом каждой аудитории из списка.
app.audiences .notInAll([...]) Возвращает TRUE , если фактическая аудитория не является членом ни одной аудитории в списке.
app.firstOpenTimestamp <=, > Сравнивает время события first_open с указанным временем в условии и возвращает TRUE или FALSE в зависимости от оператора.
Пример использования:
app.firstOpenTimestamp >= ('2022-10-31T14:37:47', 'America/Los_Angeles') .
Чтобы указать диапазон:
app.firstOpenTimestamp >= ('2022-11-01T00:00:00') && app.firstOpenTimestamp < ('2022-12-01T00:00:00') Если часовой пояс не указан, используется GMT.
app.userProperty < , <= , == , != , >= , > Возвращает TRUE если фактическое свойство пользователя численно сравнивается со значением, указанным способом, который соответствует оператору.
app.userProperty .contains([...]) Возвращает TRUE , если какое-либо из целевых значений является подстрокой фактического свойства пользователя.
app.userProperty .notContains([...]) Возвращает TRUE , если ни одно из целевых значений не является подстрокой фактического свойства пользователя.
app.userProperty .exactlyMatches([...]) Возвращает TRUE если фактическое свойство пользователя точно соответствует (с учетом регистра) любому из целевых значений в списке.
app.userProperty .matches([...]) Возвращает TRUE если любое целевое регулярное выражение в списке соответствует подстроке или всему фактическому значению. Чтобы принудительно сопоставить всю строку, добавьте к регулярному выражению префикс "^" и суффикс "$". Использует синтаксис RE2 .
app.id == Возвращает TRUE если указанное значение соответствует идентификатору приложения.
app.build < , <= , == , != , >= , > Возвращает TRUE если фактическая сборка приложения численно сравнивается со значением, указанным способом, который соответствует оператору.
app.build .contains([...]) Возвращает TRUE если какое-либо из целевых значений является подстрокой фактической сборки приложения, например, «a» и «bc» являются подстроками «abc».
app.build .notContains([...]) Возвращает TRUE , если ни одно из целевых значений не является подстрокой фактической сборки приложения.
app.build .exactlyMatches([...]) Возвращает TRUE если фактическая сборка приложения точно соответствует любому из целевых значений в списке.
app.build .matches([...]) Возвращает TRUE если любое целевое регулярное выражение в списке соответствует подстроке или всему фактическому значению. Чтобы принудительно сопоставить всю строку, добавьте к регулярному выражению префикс "^" и суффикс "$". Использует синтаксис RE2 .
app.version < , <= , == , != , >= , > Возвращает TRUE если фактическая версия приложения численно сравнивается со значением, указанным способом, соответствующим оператору.
app.version .contains([...]) Возвращает TRUE если какое-либо из целевых значений является подстрокой фактической версии приложения, например, «a» и «bc» являются подстроками «abc».
app.version .notContains([...]) Возвращает TRUE , если ни одно из целевых значений не является подстрокой фактической версии приложения.
app.version .exactlyMatches([...]) Возвращает TRUE , если фактическая версия приложения точно соответствует любому из целевых значений в списке.
app.version .matches([...]) Возвращает TRUE если любое целевое регулярное выражение в списке соответствует подстроке или всему фактическому значению. Чтобы принудительно сопоставить всю строку, добавьте к регулярному выражению префикс "^" и суффикс "$". Использует синтаксис RE2 .
app.operatingSystemAndVersion .inOne([...]) Возвращает TRUE если ОС и версия соответствуют любому из целевых значений в списке.
Например:

    app.operatingSystemAndVersion.inOne([operatingSystemName('Macintosh').version.==('10.15')])
    

app.browserAndVersion .inOne([...]) Возвращает TRUE если браузер и версия соответствуют любому из целевых значений в списке.
Например:

    app.browserAndVersion.inOne([browserName('Chrome').anyVersion])
    

app.firebaseInstallationId in [...] Возвращает TRUE если идентификатор установки соответствует любому указанному в списке. Пример использования: app.firebaseInstallationId in ['eyJhbGciOiJFUzI1N_iIs5', 'eapzYQai_g8flVQyfKoGs7']
app.customSignal < , <= , == , != , >= , > Возвращает TRUE если пользовательское условие сигнала численно сравнивается со значением, указанным способом, который соответствует оператору.
app.customSignal .contains([...]) Возвращает TRUE , если какое-либо из целевых значений является подстрокой фактического условия пользовательского сигнала.
app.customSignal .notContains([...]) Возвращает TRUE , если какое-либо из целевых значений является подстрокой фактического условия пользовательского сигнала.
app.customSignal .exactlyMatches([...]) Возвращает значение TRUE , если фактическое пользовательское условие сигнала точно соответствует (с учетом регистра) любому из целевых значений в списке.
app.customSignal .matches([...]) Возвращает TRUE , если любое целевое регулярное выражение в списке соответствует подстроке или всему фактическому условию пользовательского сигнала. Чтобы принудительно сопоставить всю строку, добавьте к регулярному выражению префикс "^" и суффикс "$". Использует синтаксис RE2 .
version(app.customSignal) < , <= , == , != , >= , > Возвращает TRUE если пользовательское условие сигнала семантически сравнивается со значением, указанным способом, который соответствует оператору.
device.country in [...] Возвращает TRUE если страна устройства соответствует любой из указанных в списке. Пример использования: device.country in ['gb', 'us'] . Код страны устройства определяется с использованием IP-адреса устройства в запросе или кода страны, определенного Firebase Analytics (если данные Analytics передаются в Firebase).
device.dateTime <= , > Сравнивает текущее время с целевым временем условия и оценивает как TRUE или FALSE в зависимости от оператора. Пример использования: dateTime < dateTime('2017-03-22T13:39:44') .
device.language in [...] Возвращает TRUE если какой-либо из языков приложения соответствует языку в списке. Пример использования: device.language in ['en-UK', 'en-US'] .
device.os == , != Возвращает TRUE , если операционная система устройства сравнивает значение в этом поле с соответствующим оператором.
percent <= , > , between Возвращает TRUE , если значение в поле percent сравнивается со значением, которое было случайно назначено в соответствии с оператором.

Вы можете указать начальное число для выбора новой случайно назначенной группы экземпляров приложений для заданного процентного диапазона, как описано в разделе Типы правил условий .

Для этого укажите имя семени перед оператором, как в следующем примере:

percent('keyName') <= 10

Чтобы настроить определенный диапазон, вы можете использовать оператор between . Чтобы настроить диапазон пользователей от 20 до 60, используя начальное число по умолчанию :

percent between 20 and 60

Чтобы настроить диапазон пользователей от 60 до 80 с помощью пользовательского начального числа:

percent('seedName') between 60 and 80