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