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

This page contains reference information for building conditional expressions using Remote Config backend APIs or the Firebase console. For more information about setting up and using the backend APIs, see Modify Remote Config programmatically .

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

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

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

Используется для создания логического союза «и» между элементами, если для условия используется более одного элемента. Если элемент используется в синтаксисе 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 ID.
app.audiences Элемент, значение которого определяется как TRUE или FALSE в зависимости от присутствия или отсутствия пользователя в одной или нескольких аудиториях Firebase Analytics .
app.firstOpenTimestamp An element based on the first time the user launches an app, obtained from the Google Analytics first_open event. Uses ISO date format with the option to specify a fixed time zone; for example, app.firstOpenTimestamp >= ('2022-10-31T14:37:47', 'America/Los_Angeles') . If no time zone is specified, GMT is used.
app.userProperty Элемент, значение которого определяется как TRUE или FALSE в зависимости от числового или строкового значения пользовательского параметра Google Analytics .
app.operatingSystemAndVersion

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

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

app.browserAndVersion

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

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

app.firebaseInstallationId Элемент, основанный на идентификаторах конкретных установленных устройств. При совпадении идентификатора установки с одним из указанных идентификаторов устанавливается значение TRUE .
app.customSignal Элемент, значение которого определяется как TRUE или FALSE в зависимости от числового, семантического или строкового значения условий пользовательского сигнала .
device.country An element based on the region/country that a device is located in, using the ISO 3166-1 alpha-2 standard (for example, US or UK). Evaluates to TRUE when a country matches an expected country code.
device.dateTime An element based on the time of the last fetch the device performs. Uses ISO date format with the option to specify a fixed time zone; for example, dateTime('2017-03-22T13:39:44', 'America/Los_Angeles') .
device.language An element based on the language selected on a device. The language is represented using an IETF Language tag such as es-ES, pt-BR, or en-US. Evaluates to TRUE when a language matches an expected language code.
device.os Элемент, основанный на операционной системе, используемой на устройстве (Apple или Android). Значение TRUE определяется, если операционная система устройства соответствует ожидаемому типу.
percent Результат оценивается как TRUE на основе включения пользователя в случайно назначенную дробную долю процента (при размерах выборки всего 0,000001%).

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

  1. Произвольно заданное name (до 100 символов)
  2. Условное выражение, результатом которого является TRUE или FALSE , состоящее из элементов, показанных выше.
  3. (Optional) The tagColor , which can be " BLUE ", " BROWN ", " CYAN ", " DEEP_ORANGE ", " GREEN ", " INDIGO ", " LIME ", " ORANGE ", " PINK ", " PURPLE ", or " TEAL ". The color is case-insensitive, and only affects how conditions are displayed in the Firebase console.

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

Например, 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([...])

Returns TRUE if any target regular expression in the list matches a substring of, or the entire, actual value. To force matching of the entire string, preface the regular expression with "^" and suffix it with "$". Uses RE2 syntax.

app.id ==

Возвращает TRUE если указанное значение совпадает с идентификатором приложения (App Id).

app.build < , <= , == , != , >= , >

Возвращает TRUE если фактическое значение сборки приложения численно совпадает со значением, указанным оператором.

app.build .contains([...])

Возвращает TRUE если какое-либо из целевых значений является подстрокой фактической сборки приложения — например, «a» и «bc» являются подстроками «abc».

app.build .notContains([...])

Возвращает TRUE если ни одно из целевых значений не является подстрокой фактической сборки приложения.

app.build .exactlyMatches([...])

Возвращает TRUE если фактическая сборка приложения точно соответствует любому из целевых значений в списке.

app.build .matches([...])

Returns TRUE if any target regular expression in the list matches a substring of, or the entire, actual value. To force matching of the entire string, preface the regular expression with "^" and suffix it with "$". Uses RE2 syntax.

app.version < , <= , == , != , >= , >

Возвращает TRUE если фактическая версия приложения численно совпадает со значением, указанным оператором.

Note: Numeric comparison operators support only numeric semantic versions (such as 1.2.3 ) and do not support pre-release suffixes or hyphens (such as -beta or -rc ). For version strings containing non-numeric suffixes or hyphens, use string operators (such as .matches or .contains ) instead.

app.version .contains([...])

Возвращает TRUE если какое-либо из целевых значений является подстрокой фактической версии приложения — например, «a» и «bc» являются подстроками «abc».

app.version .notContains([...])

Возвращает TRUE если ни одно из целевых значений не является подстрокой фактической версии приложения.

app.version .exactlyMatches([...])

Возвращает TRUE если фактическая версия приложения точно совпадает с любым из целевых значений в списке.

app.version .matches([...])

Returns TRUE if any target regular expression in the list matches a substring of, or the entire, actual value. To force matching of the entire string, preface the regular expression with "^" and suffix it with "$". Uses RE2 syntax.

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([...])

Returns TRUE if any target regular expression in the list matches a substring of, or the entire, actual custom signal condition. To force matching of the entire string, preface the regular expression with "^" and suffix it with "$". Uses RE2 syntax.

version(app.customSignal) < , <= , == , != , >= , >

Возвращает TRUE если условие пользовательского сигнала семантически сравнивается со значением, указанным в соответствии с оператором.

device.country in [...]

Returns TRUE if the device's country matches any specified in the list. Sample usage: device.country in ['gb', 'us'] . The device country code is determined using the device's IP address in the request or the country code determined by Firebase Analytics (if Analytics data is shared with 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 совпадает со значением, которое было случайным образом присвоено в соответствии с оператором.

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

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

percent('keyName') <= 10

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

percent between 20 and 60

Чтобы настроить диапазон пользователей от 60 до 80, используя пользовательское начальное значение:

percent('seedName') between 60 and 80