<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://doc.ruscomtech.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F_%D0%B4%D0%BB%D1%8F_iOS</id>
	<title>Пользовательские события для iOS - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://doc.ruscomtech.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F_%D0%B4%D0%BB%D1%8F_iOS"/>
	<link rel="alternate" type="text/html" href="https://doc.ruscomtech.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F_%D0%B4%D0%BB%D1%8F_iOS&amp;action=history"/>
	<updated>2026-09-16T11:52:03Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://doc.ruscomtech.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F_%D0%B4%D0%BB%D1%8F_iOS&amp;diff=6596&amp;oldid=prev</id>
		<title>IKuznetsov: Новая страница: «= Пользовательские события =  Ключ-АСТРОМ позволяет отправлять пользовательские события для отслеживания взаимодействий пользователей, бизнес-показателей и данных, специфичных для приложения. Вы также можете дополнить все события дополнительным кон...»</title>
		<link rel="alternate" type="text/html" href="https://doc.ruscomtech.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F_%D0%B4%D0%BB%D1%8F_iOS&amp;diff=6596&amp;oldid=prev"/>
		<updated>2026-08-19T17:53:54Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «= Пользовательские события =  Ключ-АСТРОМ позволяет отправлять пользовательские события для отслеживания взаимодействий пользователей, бизнес-показателей и данных, специфичных для приложения. Вы также можете дополнить все события дополнительным кон...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Пользовательские события =&lt;br /&gt;
&lt;br /&gt;
Ключ-АСТРОМ позволяет отправлять пользовательские события для отслеживания взаимодействий пользователей, бизнес-показателей и данных, специфичных для приложения. Вы также можете дополнить все события дополнительным контекстом, используя модификаторы событий.&lt;br /&gt;
&lt;br /&gt;
== Свойства событий и сессий ==&lt;br /&gt;
&lt;br /&gt;
Прежде чем отправлять свойства событий или сессий из вашего приложения, необходимо сначала определить их в веб-интерфейсе Ключ-АСТРОМ. Любые свойства, которые не были предварительно настроены, будут отброшены.&lt;br /&gt;
&lt;br /&gt;
Для определения нового свойства:&lt;br /&gt;
&lt;br /&gt;
# В разделе &amp;#039;&amp;#039;&amp;#039;Ключевые показатели опыта&amp;#039;&amp;#039;&amp;#039; выберите интерфейс, для которого вы хотите добавить свойство.&lt;br /&gt;
# Выберите вкладку &amp;#039;&amp;#039;&amp;#039;Настройки&amp;#039;&amp;#039;&amp;#039;, затем выберите &amp;#039;&amp;#039;&amp;#039;Свойства событий и сессий&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# В зависимости от типа создаваемого свойства выберите пункт &amp;#039;&amp;#039;&amp;#039;Добавить&amp;#039;&amp;#039;&amp;#039; в разделе &amp;#039;&amp;#039;&amp;#039;Определенные свойства события&amp;#039;&amp;#039;&amp;#039; или &amp;#039;&amp;#039;&amp;#039;Определенные свойства сессии&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# В поле &amp;#039;&amp;#039;&amp;#039;Название поля&amp;#039;&amp;#039;&amp;#039; введите название для вашего свойства (например, &amp;lt;code&amp;gt;cart.total_value&amp;lt;/code&amp;gt;).&lt;br /&gt;
# (Необязательно) Чтобы сделать имя поля нечувствительным к регистру, включите параметр &amp;#039;&amp;#039;&amp;#039;Проверка имени поля должна быть нечувствительной к регистру&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# В списке &amp;#039;&amp;#039;&amp;#039;Тип данных&amp;#039;&amp;#039;&amp;#039; выберите соответствующий тип данных для вашего свойства: &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;boolean&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ключ-АСТРОМ автоматически добавляет префикс к имени поля: &amp;lt;code&amp;gt;event_properties.&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;session_properties.&amp;lt;/code&amp;gt; в зависимости от выбранного типа свойства. Например, имя поля &amp;lt;code&amp;gt;cart.total_value&amp;lt;/code&amp;gt; станет &amp;lt;code&amp;gt;event_properties.cart.total_value&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Отправляйте пользовательские события ==&lt;br /&gt;
&lt;br /&gt;
Используется &amp;lt;code&amp;gt;sendEvent()&amp;lt;/code&amp;gt; для создания отчетов о пользовательских событиях с необязательными параметрами продолжительности и свойствами события.&lt;br /&gt;
&lt;br /&gt;
=== Основное использование ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Swift&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Простое событие&lt;br /&gt;
Astromkey.sendEvent(DTXEventData())&lt;br /&gt;
&lt;br /&gt;
// Событие с указанием длительности (в миллисекундах)&lt;br /&gt;
Astromkey.sendEvent(DTXEventData().withDuration(150))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objective-C&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Простое событие&lt;br /&gt;
[Astromkey sendEvent:[[DTXEventData alloc] init]];&lt;br /&gt;
&lt;br /&gt;
// Событие с указанием длительности (в миллисекундах)&lt;br /&gt;
[Astromkey sendEvent:[[[DTXEventData alloc] init] withDuration:@150]];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Добавить свойства события ===&lt;br /&gt;
&lt;br /&gt;
Добавьте пользовательские свойства для обеспечения контекста ваших событий. Ключи свойств должны начинаться с префикса &amp;lt;code&amp;gt;event_properties.&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Swift&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Astromkey.sendEvent(&lt;br /&gt;
    DTXEventData()&lt;br /&gt;
        .withDuration(250)&lt;br /&gt;
        .addEventProperty(&amp;quot;event_properties.checkout_step&amp;quot;, value: &amp;quot;payment_confirmed&amp;quot;)&lt;br /&gt;
        .addEventProperty(&amp;quot;event_properties.cart_value&amp;quot;, value: 149.99)&lt;br /&gt;
        .addEventProperty(&amp;quot;event_properties.item_count&amp;quot;, value: 3)&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objective-C&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Astromkey sendEvent:[[[[[DTXEventData alloc] init]&lt;br /&gt;
    withDuration:@250]&lt;br /&gt;
    addEventProperty:@&amp;quot;event_properties.checkout_step&amp;quot; value:@&amp;quot;payment_confirmed&amp;quot;]&lt;br /&gt;
    addEventProperty:@&amp;quot;event_properties.cart_value&amp;quot; value:@149.99]&lt;br /&gt;
    addEventProperty:@&amp;quot;event_properties.item_count&amp;quot; value:@3]];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Правила наименования свойств ===&lt;br /&gt;
&lt;br /&gt;
Правила и ограничения именования см. в разделе «Свойства событий и сессий».&lt;br /&gt;
&lt;br /&gt;
== Модификаторы событий ==&lt;br /&gt;
&lt;br /&gt;
Модификаторы событий позволяют перехватывать и изменять все события до их отправки в Ключ-АСТРОМ. Используйте их для добавления общих свойств, удаления конфиденциальной информации или фильтрации событий.&lt;br /&gt;
&lt;br /&gt;
=== Добавить модификатор события ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Swift&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
let subscriber = Astromkey.addEventModifier { event in&lt;br /&gt;
    // Добавить отслеживание экспериментов для всех событий&lt;br /&gt;
    event.fields[&amp;quot;event_properties.experiment_id&amp;quot;] = &amp;quot;checkout_flow_v2&amp;quot;&lt;br /&gt;
    event.fields[&amp;quot;event_properties.variant&amp;quot;] = &amp;quot;treatment_a&amp;quot;&lt;br /&gt;
    return event&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objective-C&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DTXModifyEventSubscriber *subscriber = [Astromkey addEventModifier:^DTXModifyableEvent *(DTXModifyableEvent *event) {&lt;br /&gt;
    // Добавить отслеживание экспериментов для всех событий&lt;br /&gt;
    event.fields[@&amp;quot;event_properties.experiment_id&amp;quot;] = @&amp;quot;checkout_flow_v2&amp;quot;;&lt;br /&gt;
    event.fields[@&amp;quot;event_properties.variant&amp;quot;] = @&amp;quot;treatment_a&amp;quot;;&lt;br /&gt;
    return event;&lt;br /&gt;
}];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Фильтрация событий ===&lt;br /&gt;
&lt;br /&gt;
Вернуться &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;, чтобы отменить событие:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Swift&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
let subscriber = Astromkey.addEventModifier { event in&lt;br /&gt;
    // Отфильтровывать события от тестовых пользователей&lt;br /&gt;
    if event.fields[&amp;quot;event_properties.is_test_user&amp;quot;] as? Bool == true {&lt;br /&gt;
        return nil // Отбросить это событие&lt;br /&gt;
    }&lt;br /&gt;
    return event&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objective-C&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DTXModifyEventSubscriber *subscriber = [Astromkey addEventModifier:^DTXModifyableEvent *(DTXModifyableEvent *event) {&lt;br /&gt;
    // Отфильтровывать события от тестовых пользователей&lt;br /&gt;
    if ([event.fields[@&amp;quot;event_properties.is_test_user&amp;quot;] boolValue]) {&lt;br /&gt;
        return nil; // Отбросить это событие&lt;br /&gt;
    }&lt;br /&gt;
    return event;&lt;br /&gt;
}];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Удалите конфиденциальные данные ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Swift&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
let subscriber = Astromkey.addEventModifier { event in&lt;br /&gt;
    // Удаление идентификаторов пользователей из URL-адресов&lt;br /&gt;
    if let url = event.fields[&amp;quot;url.full&amp;quot;] as? String {&lt;br /&gt;
        let redactedUrl = url.replacingOccurrences(&lt;br /&gt;
            of: #&amp;quot;/users/\w+/&amp;quot;#,&lt;br /&gt;
            with: &amp;quot;/users/{id}/&amp;quot;,&lt;br /&gt;
            options: .regularExpression&lt;br /&gt;
        )&lt;br /&gt;
        event.fields[&amp;quot;url.full&amp;quot;] = redactedUrl&lt;br /&gt;
    }&lt;br /&gt;
    return event&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objective-C&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DTXModifyEventSubscriber *subscriber = [Astromkey addEventModifier:^DTXModifyableEvent *(DTXModifyableEvent *event) {&lt;br /&gt;
    // Удаление идентификаторов пользователей из URL-адресов&lt;br /&gt;
    NSString *url = event.fields[@&amp;quot;url.full&amp;quot;];&lt;br /&gt;
    if (url) {&lt;br /&gt;
        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@&amp;quot;/users/\\w+/&amp;quot; options:0 error:nil];&lt;br /&gt;
        NSString *redactedUrl = [regex stringByReplacingMatchesInString:url options:0 range:NSMakeRange(0, url.length) withTemplate:@&amp;quot;/users/{id}/&amp;quot;];&lt;br /&gt;
        event.fields[@&amp;quot;url.full&amp;quot;] = redactedUrl;&lt;br /&gt;
    }&lt;br /&gt;
    return event;&lt;br /&gt;
}];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Удалить модификаторы событий ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Swift&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Сохраняйте данные подписчика при добавлении модификатора&lt;br /&gt;
let subscriber = Astromkey.addEventModifier { event in&lt;br /&gt;
    event.fields[&amp;quot;event_properties.custom&amp;quot;] = &amp;quot;value&amp;quot;&lt;br /&gt;
    return event&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Удалять, когда больше не требуется&lt;br /&gt;
Astromkey.removeEventModifier(subscriber)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objective-C&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Сохраняйте данные подписчика при добавлении модификатора&lt;br /&gt;
DTXModifyEventSubscriber *subscriber = [Astromkey addEventModifier:^DTXModifyableEvent *(DTXModifyableEvent *event) {&lt;br /&gt;
    event.fields[@&amp;quot;event_properties.custom&amp;quot;] = @&amp;quot;value&amp;quot;;&lt;br /&gt;
    return event;&lt;br /&gt;
}];&lt;br /&gt;
&lt;br /&gt;
// Удалять, когда больше не требуется&lt;br /&gt;
[Astromkey removeEventModifier:subscriber];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ограничения модификаторов ===&lt;br /&gt;
&lt;br /&gt;
Модификаторы событий имеют ограничения на то, какие поля могут быть изменены для обеспечения целостности данных.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Изменяемые поля&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Следующие поля можно изменять или добавлять:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;event_properties.*&amp;lt;/code&amp;gt; — свойства события.&lt;br /&gt;
* &amp;lt;code&amp;gt;session_properties.*&amp;lt;/code&amp;gt; — свойства сессии (только для событий, связанных со свойствами сессии).&lt;br /&gt;
* &amp;lt;code&amp;gt;url.full&amp;lt;/code&amp;gt; — полный URL-адрес запроса.&lt;br /&gt;
* &amp;lt;code&amp;gt;exception.stack_trace&amp;lt;/code&amp;gt; — трассировка стека исключений.&lt;br /&gt;
&lt;br /&gt;
Все остальные поля доступны только для чтения и не могут быть изменены. Исходные значения сохраняются.&lt;br /&gt;
&lt;br /&gt;
=== Важные соображения ===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Потокобезопасность&amp;#039;&amp;#039;&amp;#039; — модификаторы могут вызываться из любого потока; убедитесь, что ваш код потокобезопасен.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Производительность&amp;#039;&amp;#039;&amp;#039; — поддерживайте эффективность модификаторов; они применяются к каждому событию.&lt;br /&gt;
&lt;br /&gt;
== Примеры модификаторов ==&lt;br /&gt;
&lt;br /&gt;
=== Добавить контекст пользователя ко всем событиям ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Swift&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class UserContext {&lt;br /&gt;
    static var userId: String?&lt;br /&gt;
    static var userTier: String?&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
func setupEventEnrichment() {&lt;br /&gt;
    _ = Astromkey.addEventModifier { event in&lt;br /&gt;
        if let userId = UserContext.userId {&lt;br /&gt;
            event.fields[&amp;quot;event_properties.user_id_hash&amp;quot;] = userId.hashValue&lt;br /&gt;
        }&lt;br /&gt;
        if let userTier = UserContext.userTier {&lt;br /&gt;
            event.fields[&amp;quot;event_properties.user_tier&amp;quot;] = userTier&lt;br /&gt;
        }&lt;br /&gt;
        return event&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objective-C&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static NSString *userId = nil;&lt;br /&gt;
static NSString *userTier = nil;&lt;br /&gt;
&lt;br /&gt;
- (void)setupEventEnrichment {&lt;br /&gt;
    [Astromkey addEventModifier:^DTXModifyableEvent *(DTXModifyableEvent *event) {&lt;br /&gt;
        if (userId) {&lt;br /&gt;
            event.fields[@&amp;quot;event_properties.user_id_hash&amp;quot;] = @(userId.hash);&lt;br /&gt;
        }&lt;br /&gt;
        if (userTier) {&lt;br /&gt;
            event.fields[@&amp;quot;event_properties.user_tier&amp;quot;] = userTier;&lt;br /&gt;
        }&lt;br /&gt;
        return event;&lt;br /&gt;
    }];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Добавить флаги функций ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Swift&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
func setupFeatureFlagTracking(featureFlags: [String: Bool]) {&lt;br /&gt;
    _ = Astromkey.addEventModifier { event in&lt;br /&gt;
        for (key, value) in featureFlags {&lt;br /&gt;
            event.fields[&amp;quot;event_properties.ff_\(key)&amp;quot;] = value&lt;br /&gt;
        }&lt;br /&gt;
        return event&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objective-C&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
- (void)setupFeatureFlagTrackingWithFlags:(NSDictionary&amp;lt;NSString *, NSNumber *&amp;gt; *)featureFlags {&lt;br /&gt;
    [Astromkey addEventModifier:^DTXModifyableEvent *(DTXModifyableEvent *event) {&lt;br /&gt;
        for (NSString *key in featureFlags) {&lt;br /&gt;
            NSString *fieldKey = [NSString stringWithFormat:@&amp;quot;event_properties.ff_%@&amp;quot;, key];&lt;br /&gt;
            event.fields[fieldKey] = featureFlags[key];&lt;br /&gt;
        }&lt;br /&gt;
        return event;&lt;br /&gt;
    }];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Условное обогащение событий ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Swift&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
func setupConditionalEnrichment() {&lt;br /&gt;
    _ = Astromkey.addEventModifier { event in&lt;br /&gt;
        // Обогащать только HTTP-события&lt;br /&gt;
        if event.fields[&amp;quot;http.request.method&amp;quot;] != nil {&lt;br /&gt;
            event.fields[&amp;quot;event_properties.api_client&amp;quot;] = &amp;quot;ios_app&amp;quot;&lt;br /&gt;
            event.fields[&amp;quot;event_properties.api_version&amp;quot;] = &amp;quot;v2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Обогащать только события ошибок&lt;br /&gt;
        if event.fields[&amp;quot;exception.type&amp;quot;] != nil {&lt;br /&gt;
            event.fields[&amp;quot;event_properties.error_context&amp;quot;] = &amp;quot;user_session&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return event&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objective-C&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
- (void)setupConditionalEnrichment {&lt;br /&gt;
    [Astromkey addEventModifier:^DTXModifyableEvent *(DTXModifyableEvent *event) {&lt;br /&gt;
        // Обогащать только HTTP-события&lt;br /&gt;
        if (event.fields[@&amp;quot;http.request.method&amp;quot;]) {&lt;br /&gt;
            event.fields[@&amp;quot;event_properties.api_client&amp;quot;] = @&amp;quot;ios_app&amp;quot;;&lt;br /&gt;
            event.fields[@&amp;quot;event_properties.api_version&amp;quot;] = @&amp;quot;v2&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Обогащать только события ошибок&lt;br /&gt;
        if (event.fields[@&amp;quot;exception.type&amp;quot;]) {&lt;br /&gt;
            event.fields[@&amp;quot;event_properties.error_context&amp;quot;] = @&amp;quot;user_session&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return event;&lt;br /&gt;
    }];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Связанные темы ==&lt;br /&gt;
&lt;br /&gt;
* Производительность веб-запросов — модификаторы HTTP-событий.&lt;br /&gt;
* Сообщения об ошибках и сбоях — события исключений.&lt;br /&gt;
* Конфигурация — конфигурация агента.&lt;/div&gt;</summary>
		<author><name>IKuznetsov</name></author>
	</entry>
</feed>