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

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

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

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

<Tabs groupId="current-os" queryString>
<TabItem value="swift" label="Swift" default>

```swift showLineNumbers
let builder = AdaptyProfileParameters.Builder()
    .with(email: "email@email.com")
    .with(phoneNumber: "+18888888888")
    .with(firstName: "John")
    .with(lastName: "Appleseed")
    .with(gender: .other)
    .with(birthday: Date())
    
do {
    try await Adapty.updateProfile(params: builder.build())
} catch {
    // handle the error
}
```
</TabItem>
<TabItem value="swift-callback" label="Swift-Callback" default>

```swift showLineNumbers
let builder = AdaptyProfileParameters.Builder()
    .with(email: "email@email.com")
    .with(phoneNumber: "+18888888888")
    .with(firstName: "John")
    .with(lastName: "Appleseed")
    .with(gender: .other)
    .with(birthday: Date())
    
Adapty.updateProfile(params: builder.build()) { error in
    if error != nil {
        // handle the error                        
    }
}
```
</TabItem>

</Tabs>

Обратите внимание: атрибуты, ранее установленные с помощью метода `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\}

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

```swift showLineNumbers
do {
     builder = try builder.with(customAttribute: "value1", forKey: "key1")
} catch {
     // handle key/value validation error
}
```

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

```swift showLineNumbers
do {
     builder = try builder.withRemoved(customAttributeForKey: "key2")
} catch {
     // handle error
}
```

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

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

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

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