---
title: "iOS SDKでユーザー属性を設定する"
description: "Adaptyでユーザー属性を設定し、より効果的なオーディエンスのセグメンテーションを実現する方法を学びましょう。"
---

アプリのユーザーに対して、メールアドレスや電話番号などの任意の属性を設定できます。設定した属性は、ユーザーの[セグメント](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\}

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

独自のカスタム属性を設定できます。カスタム属性は通常、アプリの使用状況に関連したものです。たとえば、フィットネスアプリなら週あたりの運動回数、語学学習アプリならユーザーの習熟度などが考えられます。カスタム属性をセグメントで活用して、ターゲットを絞ったペイウォールやオファーを作成したり、どのプロダクト指標が収益に最も影響するかをアナリティクスで分析したりできます。

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

事前にどのカスタム属性が設定されているかを確認したい場合は、`AdaptyProfile` オブジェクトの `customAttributes` フィールドを使用してください。

:::warning
`customAttributes` の値は最新でない場合があります。ユーザー属性は異なるデバイスからいつでも送信される可能性があるため、最後の同期後にサーバー上の属性が変更されている場合があります。
:::

### 制限事項 \{#limits\}

- ユーザーあたりのカスタム属性は最大30個まで
- キー名は最大30文字。キー名に使用できる文字は英数字と以下の記号です: `_`  `-` `.`
- 値は文字列または浮動小数点数で、50文字以内