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

您可以为应用用户设置可选属性，例如电子邮件、电话号码等。然后，您可以使用这些属性创建用户[市场细分](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\}

`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\}

你可以设置自己的自定义用户属性，这些属性通常与应用的使用情况相关。例如，健身类应用可以记录每周的锻炼次数，语言学习类应用可以记录用户的知识水平等。你可以在市场细分中使用这些属性来创建精准的付费墙和优惠活动，也可以在分析中利用它们来找出哪些产品数据图表对收入影响最大。
```dart 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:)` 方法：
```dart showLineNumbers
try {
  final builder = AdaptyProfileParametersBuilder()
    ..removeCustomAttribute('key1')
    ..removeCustomAttribute('key2');

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

有时你需要查看之前已设置了哪些自定义属性。为此，请使用 `AdaptyProfile` 对象的 `customAttributes` 字段。
:::warning
请注意，`customAttributes` 的值可能已过时，因为用户属性可以随时从不同设备发送，服务器上的属性可能在上次同步后已被修改。
:::
### 限制 \{#limits\}

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