---
title: "Установка атрибутов пользователя в React Native SDK"
description: "Узнайте, как обновлять атрибуты пользователя и данные профиля в приложении React Native с помощью Adapty SDK."
---

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

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

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

```typescript showLineNumbers
// Only for TypeScript validation

const params: AdaptyProfileParameters = {
    email: 'email@email.com',
    phoneNumber: '+18888888888',
    firstName: 'John',
    lastName: 'Appleseed',
    gender: 'other',
    birthday: new Date().toISOString(),
};

try {
    await adapty.updateProfile(params);
} catch (error) {
    // handle `AdaptyError`
}
```

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

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

```typescript showLineNumbers
try {
  await adapty.updateProfile({
    codableCustomAttributes: {
      key_1: 'value_1',
      key_2: 2,
    },
  });
} catch (error) {
    // handle `AdaptyError`
}
```

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

```typescript showLineNumbers
try {
  // to remove a key, pass null as its value
  await adapty.updateProfile({
    codableCustomAttributes: {
      key_1: null,
      key_2: null,
    },
  });
} catch (error) {
    // handle `AdaptyError`
}
```

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

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

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

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