Справочник по условным выражениям 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.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.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