---
title: "Задание атрибутов пользователя в Flutter SDK"
description: "Узнайте, как задавать атрибуты пользователя в Adapty для более точной сегментации аудитории."
---

Вы можете задавать пользователям вашего приложения дополнительные атрибуты: email, номер телефона и другие. Атрибуты можно использовать для создания [сегментов](segments) пользователей или просматривать их в CRM.

### Задание атрибутов пользователя \{#setting-user-attributes\}

Чтобы задать атрибуты пользователя, вызовите метод `.updateProfile()`:

```dart showLineNumbers
final builder = AdaptyProfileParametersBuilder()
  ..setEmail("email@email.com")
  ..setPhoneNumber("+18888888888")
  ..setFirstName('John')
  ..setLastName('Appleseed')
  ..setGender(AdaptyProfileGender.other)
  ..setBirthday(DateTime(1970, 1, 3));

try {
  await Adapty().updateProfile(builder.build());
} on AdaptyError catch (adaptyError) {
  // handle the error
} catch (e) {
}
```

Обратите внимание: атрибуты, которые вы ранее задали с помощью метода `updateProfile`, не будут сброшены.

:::tip

Хотите увидеть реальный пример интеграции Adapty SDK в мобильное приложение? Посмотрите наши [примеры приложений](sample-apps) — они демонстрируют полную настройку: отображение пейволов, совершение покупок и другие базовые функции.

:::

### Список допустимых ключей \{#the-allowed-keys-list\}

Допустимые ключи `<Key>` объекта `AdaptyProfileParameters.Builder` и соответствующие значения `<Value>` приведены ниже:

| Ключ | Значение |
|---|-----|
| <p>email</p><p>phoneNumber</p><p>firstName</p><p>lastName</p> | String |
| gender | Enum, допустимые значения: `female`, `male`, `other` |
| birthday | Date |

### Пользовательские атрибуты \{#custom-user-attributes\}

Вы можете задавать собственные атрибуты, как правило связанные с использованием вашего приложения. Например, для фитнес-приложений это может быть количество тренировок в неделю, а для приложений для изучения языков — уровень знаний пользователя. Их можно использовать в сегментах для создания адресных пейволов и предложений, а также в аналитике, чтобы определить, какие продуктовые метрики сильнее всего влияют на выручку.

```javascript showLineNumbers
try {
  final builder = AdaptyProfileParametersBuilder()
      ..setCustomStringAttribute('value1', 'key1')
      ..setCustomDoubleAttribute(1.0, 'key2');

await Adapty().updateProfile(builder.build());
} on AdaptyError catch (adaptyError) {
// handle the error
} catch (e) {
}
```

Чтобы удалить существующий ключ, используйте метод `.withRemoved(customAttributeForKey:)`:

```javascript showLineNumbers
try {
  final builder = AdaptyProfileParametersBuilder()
    ..removeCustomAttribute('key1')
    ..removeCustomAttribute('key2');

await Adapty().updateProfile(builder.build());
} on AdaptyError catch (adaptyError) {
// handle the error
} catch (e) {
}
```

Иногда нужно узнать, какие пользовательские атрибуты уже установлены. Для этого используйте поле `customAttributes` объекта `AdaptyProfile`.

:::warning
Имейте в виду, что значение `customAttributes` может быть устаревшим: атрибуты пользователя могут отправляться с разных устройств в любое время, поэтому данные на сервере могут измениться после последней синхронизации.
:::

### Ограничения \{#limits\}

- До 30 пользовательских атрибутов на одного пользователя
- Длина имени ключа — не более 30 символов. Допускаются буквенно-цифровые символы, а также: `_`  `-` `.`
- Значение может быть строкой или числом с плавающей точкой длиной не более 50 символов.