> ## Documentation Index
> Fetch the complete documentation index at: https://moengage.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ユーザー属性とユーザー ID のトラッキング

> React Native SDK で、ユーザー属性をトラッキングし、ID 解決のための識別子を設定します。

ユーザー属性とは、ユーザーについて把握している情報のことです。年齢や性別などの人口統計情報、プランなどのアカウント固有の情報、ユーザーが特定の A/B テストのバリエーションを見たかどうかなどが含まれます。ユーザー属性は、顧客のライフサイクル全体を通じて参照できる顧客プロパティです。

## ユーザー属性とユーザー識別子の違い

MoEngage において、ユーザー属性とユーザー識別子はそれぞれ異なる目的を持っています。

**ユーザー識別子:**

ユーザー識別子は、複数のセッションやデバイスにわたって保持される一意の値です。これにより、ユーザーが異なるプラットフォームを切り替えたり、後からログインしたりした場合でも、MoEngage はそのユーザーを同一人物として認識できます。ID 解決と呼ばれるこのプロセスは、統合されたユーザープロファイルの維持、一貫したユーザーエクスペリエンスの提供、ユーザー行動の正確なトラッキングに不可欠です。

ユーザー識別子の一般的な例は次のとおりです。

* メールアドレス: ユーザーのメールアドレスは個人に固有であり、異なるプラットフォーム間でも一貫しているため、広く使用されている識別子です。
* 電話番号: メールアドレスと同様に、電話番号も一意の識別子として使用でき、特にモバイルアプリケーションで有効です。
* ユーザー ID: MoEngage は登録時に各ユーザーに一意の ID を割り当てます。この ID は、MoEngage プラットフォーム内で信頼性の高い識別子として使用されます。
* 顧客 ID: E コマースや顧客関係管理（CRM）システムでは、さまざまなインタラクションにわたって個々の顧客をトラッキングするために顧客 ID が割り当てられます。

これらの識別子は ***identifyUser()*** メソッドを使用して設定します。

ワークスペースで [ID 解決](https://www.moengage.com/docs/user-guide/data/user-data/unified-identity-identity-resolution#overview)が有効化され、識別子がアクティブ化されていない限り、デフォルトではパラメーター ***ID*** がワークスペースで使用される識別子となります。

**ユーザー属性**:

ユーザーのプロファイルを充実させる、ユーザーに関する説明的な情報です - セグメンテーション、パーソナライゼーション、分析に使用されます - 例: 名前、年齢、性別、好み、購入履歴 - ***setFirstName()*** や ***setUserAttribute()*** などの専用メソッドを使用して設定します - パーソナライズされたユーザーエクスペリエンスの作成に役立ちます

簡単に言えば、識別子は「このユーザーは誰か？」に答え、属性は「このユーザーについて何がわかっているか？」に答えるものです。

## MoEngage の機能を支える

ユーザー属性と識別子は、MoEngage を効果的に活用するために不可欠です。

* **セグメンテーション:**
  * 属性を使用して、人口統計や行動などに基づくターゲットユーザーグループを作成します。
  * 例: 特定のキャンペーン向けに、年齢や購入履歴でユーザーをセグメント化します。
* **パーソナライゼーション:**
  * 識別子により、デバイス間で一貫したユーザーエクスペリエンスが確保されます。
  * 属性により、カスタマイズされたコンテンツ（メッセージ、レコメンデーション）が可能になります。
  * 例: 名前を使用してメールをパーソナライズしたり、関連性の高い商品をレコメンドしたりします。
* **分析:**
  * 属性は、ユーザーのアクションや行動データにコンテキストを提供します。
  * セグメント別のコンバージョン率や、人口統計別の機能エンゲージメントを分析します。
  * データに基づく意思決定のために、より深いインサイトを得られます。

属性と識別子を使用することで、より関連性が高く魅力的なユーザーエクスペリエンスを構築できます。

# ログイン/ログアウトの実装

SDK バージョン 11.2.00 未満については、こちらのドキュメントを参照してください。

## ユーザーのログイン

**単一の識別子**

アプリケーションがログインにメール ID などの単一の一意なユーザー識別子を使用している場合は、以下の API を使用して識別子を MoEngage SDK に渡します。

<CodeGroup>
  ```javascript JavaScript theme={null}
  import ReactMoE from 'react-native-moengage';
  ReactMoE.identifyUser("abc@xyz.com"); //Pass any unique value for your user
  ```
</CodeGroup>

**注**: キーが指定されていない場合、SDK はデフォルトで MoEngage の一意のユーザー識別子である `uid` を使用します。

**複数の識別子**

アプリケーションがメール ID、ユーザー ID、携帯電話番号など複数のログイン識別子をサポートしている場合は、次の関数を使用して関連するすべての識別子を SDK に渡します。

<CodeGroup>
  ```javascript JavaScript theme={null}
  import ReactMoE from 'react-native-moengage'
  	ReactMoE.identifyUser({"uid": "react-native","u_em": "react-native@moengage.com"});
  ```
</CodeGroup>

<Info>
  ユーザー識別とセッション管理を改善するために、SDK の関数が更新されています。

  * **強制ログアウト**: MoEngage SDK は、デバイスで新しいユーザーが検出されたときに、以前のユーザーを自動的にログアウトしなくなりました。ID 解決が有効なワークスペースでは、データの破損を防ぐために、ログアウトを明示的に呼び出す必要があります。
  * **SetUniqueID**: *IdentifyUser* 関数は複数の識別子をサポートしているため、ユーザー識別に *SetUniqueID* 関数を使用する必要がなくなりました。*SetUniqueID* は今後の SDK バージョンで削除される予定であるため、特にワークスペースで ID 解決を使用している場合は、代わりに *identifyUser* を使用することが重要です。
  * **SetAlias**: ID 解決機能が有効なワークスペースでは、MoEngage SDK は以前の識別子の値を保存します。*IdentifyUser* 関数を使用して新しい識別子の値をトラッキングすると、MoEngage SDK は識別子の値の変更を検出し、それに応じてレポートします。
  * ログアウトせずに *IdentifyUser* 関数を呼び出すと、既存のログイン中ユーザーの ID が更新されます。
</Info>

<Note>
  ネットワークの問題により識別子が MoEngage サーバーに届かなかった場合、SDK は `identifyUser()` の呼び出しをキャッシュし、ネットワークが利用可能になったとき、または次回アプリを開いたときに自動的に再試行します。
</Note>

SDK とデータトラッキングを有効化または無効化するには、[コンプライアンス](/docs/ja/developer-guide/react-native-sdk/compliance/compliance)を参照してください。

**注**: 複数の識別子で ***identifyUser()*** を実装する前に、MoEngage ダッシュボードで定義済みの識別子をアクティブ化する必要があります。設定手順については、[こちらのドキュメント](https://www.moengage.com/docs/user-guide/data/user-data/unified-identity-identity-resolution#configure-multiple-identifiers)を参照してください。

***identifyUser() を複数回呼び出した場合の動作***

* ***identifyUser()*** を複数回呼び出すと、新しい識別子は既存のリストを置き換えるのではなく、既存のリストに追加されます。以下はその動作例です。

<CodeGroup>
  ```javascript JavaScript theme={null}
  import ReactMoE from 'react-native-moengage';
              //First call with email
              ReactMoE.identifyUser({"u_em":"abc@xyz.com"});
            //Later call identifyUser() with mobile Number
            ReactMoE.identifyUser({"u_mb":"999999999"});
            //Result now the user has both email and mobile identifiers;
  ```
</CodeGroup>

* すでに存在する識別子キーで ***identifyUser()*** を呼び出すと、新しい値で既存の値が更新されます。以下はその動作例です。

<CodeGroup>
  ```javascript JavaScript theme={null}
  import ReactMoE from 'react-native-moengage';
              //First call with initial email
              ReactMoE.identifyUser({"u_em":"abc@xyz.com"});
            //Later call identifyUser() when User updates their email
            ReactMoE.identifyUser({"u_em":"jfk@xyz.com"});
            //Result now the user email is updated with the later one;
  ```
</CodeGroup>

この動作により、次のことが可能になります。

* 新しい識別子が利用可能になった時点で追加する
* 他の識別子に影響を与えずに特定の識別子を更新する
* 時間をかけて完全なユーザー ID プロファイルを構築する

ここで、`u_em`、`u_mb` は標準ユーザー属性です。その他の標準ユーザー属性でユーザーを識別するには、[こちらのセクション](/docs/ja/developer-guide/react-native-sdk/data-tracking/tracking-user-attributes-and-user-identity)を参照してください。

## 標準属性とカスタム属性

**標準属性:** メールアドレスや携帯電話番号など、MoEngage ダッシュボード内で事前に定義されている一般的なユーザー属性です。以下の表に、これらの標準属性と対応するキー名を示します。

| ユーザー属性名 | identifyUser メソッドで使用するキー名 |
| - | - |
| ID | uid |
| Email (Standard) | u\_em |
| Gender | u\_gd |
| Birthday | u\_bd |
| Name | u\_n |
| First Name | u\_fn |
| Last Name | u\_ln |
| Mobile Number (Standard) | u\_mb |

**カスタム属性:** 標準属性に加えて、MoEngage ダッシュボード内で独自に定義する属性です。以下は、カスタム属性を扱う方法の例です。

<CodeGroup>
  ```javascript JavaScript theme={null}
  import ReactMoE from 'react-native-moengage';
        
  //replace custom_attribute_name with the actual name of your custom user attribute and attributeValue with the actual value you want to assign to the attribute
        
  ReactMoE.identifyUser({ custom_attribute_name: 'attributeValue' });
        
  //you can set two or more identities at the same time
        
  ReactMoE.identifyUser({ cust_attr_1: 'value1', cust_attr_2: 'value2' });
        
  //you can set custom user identity and standard user identity at the same time
        
  ReactMoE.identifyUser({ cust_attr_1: 'value1', cust_attr_2: 'value2', u_em: 'emailValue@emailDomain.com' });
  ```
</CodeGroup>

複数の識別子を設定する際にカスタム属性と標準属性の両方を選択する詳細な手順については、[こちらのドキュメント](https://www.moengage.com/docs/user-guide/data/user-data/unified-identity-identity-resolution#step-1-select-identifiers)を参照してください。

## ユーザーのログアウト

<CodeGroup>
  ```javascript JavaScript theme={null}
  import ReactMoE from 'react-native-moengage';
  ReactMoE.logout();
  ```
</CodeGroup>

<Warning>
  **重要 - 非常に重要な統合ガイドライン**

  プロジェクトで `identifyUser` と `setUserUniqueID()`（バージョン 11.2.0 未満に存在する識別子を割り当てるメソッド）の両方のログインメソッドを使用しないでください。どちらか一方のメソッドのみを使用してください。両方のメソッドを使用すると、MoEngage アカウントでユーザープロファイルの作成やマージに不整合が生じる可能性があります。
</Warning>

### ログアウトコールバックリスナー

ログアウトが完了したときにコールバックを受け取るには、`logoutComplete` イベントのリスナーを登録します。

<CodeGroup>
  ```javascript JavaScript theme={null}
  ReactMoE.setEventListener("logoutComplete", (data) =>
    console.log(("Logout completed", data)
    // process your logout complete here
  );
  ```
</CodeGroup>

<Note>
  ログアウトコールバックリスナーには、React Native SDK バージョン 12.8.0 以降が必要です。
</Note>

# ユーザー属性のトラッキング

名前、メール、携帯電話番号、性別などのユーザー属性を設定するには、次のヘルパーメソッドを使用します。

<CodeGroup>
  ```javascript JavaScript theme={null}
  import ReactMoE, {
    MoEGeoLocation,
  } from "react-native-moengage";

  ReactMoE.setUserName("abc");
  ReactMoE.setUserFirstName("abc");
  ReactMoE.setUserLastName("xyz");
  ReactMoE.setUserEmailID("abc@xyz.com");
  ReactMoE.setUserContactNumber(1234567890);
  ReactMoE.setUserGender("Male"); // OR Female
  // Format - ISO-8601 String
  ReactMoE.setUserBirthday("1970-01-01T12:00:00Z");
  // For Location use MoEGeoLocation instance
  ReactMoE.setUserLocation(new MoEGeoLocation(77.3201, -77.3201));
  // For array of integers
  ReactMoE.setUserAttribute("arrayOfInt",[1,2,3]);
  // For array of strings
  ReactMoE.setUserAttribute("arrayOfString",['sample1','sample2','sample3']);
  ```
</CodeGroup>

その他のユーザー属性を設定するには、汎用メソッド ***setUserAttribute(key,value)*** を使用できます。

カスタムユーザー属性を設定するには、以下のように属性名を指定する必要があります。

<CodeGroup>
  ```javascript JavaScript theme={null}
  import ReactMoE, {
    MoEGeoLocation,
  } from "react-native-moengage";

  ReactMoE.setUserAttribute("attribute name", "attribute value");

  // For Time attribute use ISO-8601 format
  ReactMoE.setUserAttributeISODateString(
                    "time attribute name",
                    new Date().toISOString()
                  );

  // For Location, use MoEGeoLocation instance
  ReactMoE.setUserAttributeLocation(
                    "location attribute name",
                    new MoEGeoLocation(10.3223, -88.6026)
                  );
  ```
</CodeGroup>

<Info>
  イベント、イベント属性、ユーザー属性の名前に "moe\_" をプレフィックスとして使用することはできません。これはシステムプレフィックスであり、使用すると事前の通知なく定期的にブラックリストに登録される可能性があります。
</Info>

## カスタムブール型ユーザー属性

### iOS（任意）

react-native-moengage のバージョン 11.x.x 以降、カスタムブール型属性のデフォルトのトラッキングは ***double(0/1***) から ***boolean(true/false)*** に変更されます。これを設定するには、***MoEAnalyticsConfig*** を使用し、ブール値を double としてトラッキングする場合は true を渡します。デフォルトでは **false** に設定されており、ブール値は true/false としてトラッキングされます。

以下の初期化コードスニペットを参照してください。

<CodeGroup>
  ```java JavaScript theme={null}
  import ReactMoE from 'react-native-moengage';
  import { MoEInitConfig, MoEPushConfig, MoEngageLogConfig, MoEngageLogLevel } from "react-native-moengage";
  const moEInitConfig = new MoEInitConfig(
    MoEPushConfig.defaultConfig(),
    new MoEngageLogConfig(MoEngageLogLevel.DEBUG, isEnabledForReleaseBuild),
    new MoEAnalyticsConfig(true)
  );
  ReactMoE.initialize(YOUR_WORKSPACE_ID, moEInitConfig);
  ```
</CodeGroup>

ブール型ユーザー属性をトラッキングするには、以下のサンプルコードを参照してください。

<CodeGroup>
  ```javascript JavaScript theme={null}
  import ReactMoE, {
    MoEGeoLocation,
  } from “react-native-moengage”;
        
  // If MoEAnalyticsConfig is passed as true then `boolean attribute True` will tracked with value 1 else true
  ReactMoE.setUserAttribute("boolean attribute True", true);
        
  // If MoEAnalyticsConfig is passed as true then `boolean attribute False` will tracked with value 0 else false
  ReactMoE.setUserAttribute("boolean attribute False", false);
  ```
</CodeGroup>

## ユーザー属性の予約済みキーワード

以下は、ユーザー属性のトラッキング時に使用してはならないキーの一覧です。

* USER\_ATTRIBUTE\_UNIQUE\_ID
* USER\_ATTRIBUTE\_USER\_EMAIL
* USER\_ATTRIBUTE\_USER\_MOBILE
* USER\_ATTRIBUTE\_USER\_NAME
* USER\_ATTRIBUTE\_USER\_GENDER
* USER\_ATTRIBUTE\_USER\_FIRST\_NAME
* USER\_ATTRIBUTE\_USER\_LAST\_NAME
* USER\_ATTRIBUTE\_USER\_BDAY
* USER\_ATTRIBUTE\_NOTIFICATION\_PREF
* USER\_ATTRIBUTE\_OLD\_ID
* MOE\_TIME\_FORMAT
* MOE\_TIME\_TIMEZONE
* USER\_ATTRIBUTE\_DND\_START\_TIME
* USER\_ATTRIBUTE\_DND\_END\_TIME
* MOE\_GAID
* MOE\_ISLAT
* INSTALL
* UPDATE
* status
* user\_id
* source

<Info>
  イベント、イベント属性、ユーザー属性の名前に "moe\_" をプレフィックスとして使用することはできません。これはシステムプレフィックスであり、使用すると事前の通知なく定期的にブラックリストに登録される可能性があります。
</Info>
