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

На этой странице представлена ​​справочная информация по созданию условных выражений с использованием API бэкэнда Remote Config или консоли Firebase . Более подробную информацию о настройке и использовании API бэкэнда см. в разделе «Программное изменение Remote Config» .

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

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 Элемент, основанный на времени первого запуска приложения пользователем, полученный из события 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 Language, например, 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 Id).

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 совпадает со значением, которое было случайным образом присвоено в соответствии с оператором.

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

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

percent('keyName') <= 10

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

percent between 20 and 60

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

percent('seedName') between 60 and 80