---
title: "在 Android SDK 中设置用户属性"
description: "了解如何在 Adapty 中设置用户属性，以实现更好的目标受众细分。"
---

您可以为应用的用户设置可选属性，例如电子邮件、电话号码等。您可以使用这些属性来创建用户[市场细分](segments)，或直接在 CRM 中查看。

### 设置用户属性 \{#setting-user-attributes\}

要设置用户属性，请调用 `.updateProfile()` 方法：

<Tabs groupId="current-os" queryString>
<TabItem value="kotlin" label="Kotlin" default>

```kotlin showLineNumbers
val builder = AdaptyProfileParameters.Builder()
    .withEmail("email@email.com")
    .withPhoneNumber("+18888888888")
    .withFirstName("John")
    .withLastName("Appleseed")
    .withGender(AdaptyProfile.Gender.OTHER)
    .withBirthday(AdaptyProfile.Date(1970, 1, 3))
  
Adapty.updateProfile(builder.build()) { error ->
    if (error != null) {
        // handle the error
    }
}
```

</TabItem>
<TabItem value="java" label="Java" default>

```java showLineNumbers
AdaptyProfileParameters.Builder builder = new AdaptyProfileParameters.Builder()
    .withEmail("email@email.com")
    .withPhoneNumber("+18888888888")
    .withFirstName("John")
    .withLastName("Appleseed")
    .withGender(AdaptyProfile.Gender.OTHER)
    .withBirthday(new AdaptyProfile.Date(1970, 1, 3));

Adapty.updateProfile(builder.build(), error -> {
    if (error != null) {
        // handle the error
    }
});
```
</TabItem>
</Tabs>

请注意，之前通过 `updateProfile` 方法设置的属性不会被重置。

:::tip

想了解 Adapty SDK 如何集成到移动应用中的真实示例？请查看我们的[示例应用](sample-apps)，其中展示了完整的配置过程，包括显示付费墙、完成购买以及其他基本功能。

:::

### 允许的键列表 \{#the-allowed-keys-list\}

`AdaptyProfileParameters.Builder` 的允许键 `<Key>` 及其对应值 `<Value>` 如下所示：

| 键 | 值 |
|---|-----|
| <p>email</p><p>phoneNumber</p><p>firstName</p><p>lastName</p> | String |
| gender | 枚举，允许的值为：`female`、`male`、`other` |
| birthday | Date |

### 自定义用户属性 \{#custom-user-attributes\}

您可以设置自定义属性，这些属性通常与您的应用使用情况相关。例如，对于健身应用，可以是每周锻炼次数；对于语言学习应用，可以是用户的知识水平等。您可以在市场细分中使用这些属性来创建针对性的付费墙和优惠，也可以在数据分析中用于找出哪些产品指标对营收影响最大。

<Tabs groupId="current-os" queryString>
<TabItem value="kotlin" label="Kotlin" default>
```kotlin showLineNumbers
builder.withCustomAttribute("key1", "value1")
```
</TabItem>
<TabItem value="java" label="Java" default>
```java showLineNumbers
builder.withCustomAttribute("key1", "value1");
```
</TabItem>
</Tabs>

要删除已有的键，请使用 `.withRemoved(customAttributeForKey:)` 方法：

<Tabs groupId="current-os" queryString>
<TabItem value="kotlin" label="Kotlin" default>
```kotlin showLineNumbers
builder.withRemovedCustomAttribute("key2")
```
</TabItem>
<TabItem value="java" label="Java" default>
```java showLineNumbers
builder.withRemovedCustomAttribute("key2");
```
</TabItem>

</Tabs>

有时您可能需要查看已设置的自定义属性。为此，请使用 `AdaptyProfile` 对象的 `customAttributes` 字段。

:::warning
请注意，`customAttributes` 的值可能不是最新的，因为用户属性可以随时从不同设备发送，服务器上的属性可能在上次同步后已发生变化。
:::

### 限制 \{#limits\}

- 每个用户最多 30 个自定义属性
- 键名最长 30 个字符，键名可包含字母数字字符及以下任意字符：`_`  `-` `.`
- 值可以是字符串或浮点数，最多 50 个字符。