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

# ターゲティング設定

> React Native SDKでターゲティングを設定する方法を説明します。

## 概要

ターゲティング設定により、特定のユーザーグループにパーソナライズされた広告を表示できます。Adrop SDKは**オーディエンスターゲティング**を提供しています。

* **オーディエンスターゲティング**：ユーザー属性（プロパティ）に基づいて広告を表示

<Note>
  ターゲティングデータを収集するには、広告をロードする前にプロパティを設定する必要があります。
</Note>

***

## UIDの設定（オプション）

ユーザーを識別するためのユーザー識別子（UID）を設定します。UIDはクロスプラットフォームでのターゲティング情報共有に使用されます。

### 使用方法

```typescript theme={null}
import { Adrop } from 'adrop-ads-react-native'

// ユーザーログイン後（オプション）
Adrop.setUID("user_123")

// ユーザーログアウト時
Adrop.setUID("")
```

### パラメータ

| パラメータ | タイプ      | 説明                     |
| ----- | -------- | ---------------------- |
| `uid` | `string` | 一意のユーザー識別子（例：サービス会員ID） |

<Warning>
  UIDはSHA-256でハッシュ化されて送信されます。個人情報（メール、電話番号など）を直接渡さないでください。
</Warning>

<Note>
  ログアウト時に空文字列（`""`）を渡すとUIDがリセットされます。
</Note>

***

## オーディエンスターゲティング

ユーザー属性情報（プロパティ）を収集して、特定のユーザーグループに広告を表示します。

### プロパティの設定

`AdropMetrics.setProperty()`メソッドを使用してユーザー属性情報を収集します。

```typescript theme={null}
import { AdropMetrics } from 'adrop-ads-react-native'

// 文字列プロパティ
AdropMetrics.setProperty("membership_level", "premium")

// 数値プロパティ
AdropMetrics.setProperty("booking_count", 15)

// ブールプロパティ
AdropMetrics.setProperty("is_subscriber", true)

// null値を渡す（プロパティを削除）
AdropMetrics.setProperty("membership_level", null)
```

### プロパティの取得

`AdropMetrics.properties()`を使用して、現在設定されているすべてのプロパティを取得できます。

```typescript theme={null}
import { AdropMetrics } from 'adrop-ads-react-native'

const currentProperties = await AdropMetrics.properties()
console.log(currentProperties)
// { membership_level: "premium", booking_count: 15, ... }
```

<ParamField body="properties()" type="() => Promise<Record<string, any>>">
  現在設定されているすべてのプロパティをキーバリューオブジェクトとして返します。プロパティが設定されていない場合、空のオブジェクトを返します。
</ParamField>

### パラメータ

| パラメータ   | タイプ      | 説明                                    |
| ------- | -------- | ------------------------------------- |
| `key`   | `string` | プロパティキー（最大64文字）                       |
| `value` | `any`    | プロパティ値（string, number, boolean, null） |

<Warning>
  * プロパティキーは最大64文字まで設定できます。
  * 文字列値は最大256文字まで設定できます。
  * 数値は最大9007199254740991まで設定できます。
  * 最大256個のプロパティを設定できます。
</Warning>

### 組み込みプロパティ

Adrop SDKはターゲティング用の組み込みプロパティを提供しています。`AdropProperties`と`AdropGender`列挙型を使用して値を設定します。

#### 年齢（生年月日）

生年月日情報を渡すと、年齢が自動的に計算されます。

```typescript theme={null}
import { AdropMetrics } from 'adrop-ads-react-native'
import { AdropProperties } from 'adrop-ads-react-native'

// 年のみ (yyyy)
AdropMetrics.setProperty(AdropProperties.BIRTH, "1990")

// 年と月 (yyyyMM)
AdropMetrics.setProperty(AdropProperties.BIRTH, "199003")

// 完全な日付 (yyyyMMdd)
AdropMetrics.setProperty(AdropProperties.BIRTH, "19900315")
```

**日付フォーマット**

| フォーマット     | 例          | 説明    |
| ---------- | ---------- | ----- |
| `yyyy`     | "1990"     | 年のみ   |
| `yyyyMM`   | "199003"   | 年と月   |
| `yyyyMMdd` | "19900315" | 完全な日付 |

#### 性別

```typescript theme={null}
import { AdropMetrics } from 'adrop-ads-react-native'
import { AdropProperties, AdropGender } from 'adrop-ads-react-native'

// 男性
AdropMetrics.setProperty(AdropProperties.GENDER, AdropGender.MALE)

// 女性
AdropMetrics.setProperty(AdropProperties.GENDER, AdropGender.FEMALE)

// その他
AdropMetrics.setProperty(AdropProperties.GENDER, AdropGender.OTHER)

// 不明
AdropMetrics.setProperty(AdropProperties.GENDER, AdropGender.UNKNOWN)
```

**性別定数**

| 定数                    | 値     | 説明  |
| --------------------- | ----- | --- |
| `AdropGender.MALE`    | `"M"` | 男性  |
| `AdropGender.FEMALE`  | `"F"` | 女性  |
| `AdropGender.OTHER`   | `"O"` | その他 |
| `AdropGender.UNKNOWN` | `"U"` | 不明  |

#### 年齢を直接設定

生年月日の代わりに年齢を直接設定することもできます。

```typescript theme={null}
import { AdropMetrics } from 'adrop-ads-react-native'
import { AdropProperties } from 'adrop-ads-react-native'

AdropMetrics.setProperty(AdropProperties.AGE, 30)
```

<Note>
  `BIRTH`または`AGE`のいずれかを設定すれば十分です。両方が設定されている場合、`BIRTH`が優先されます。
</Note>

### カスタムプロパティ

サービス用のカスタムプロパティを設定できます。カスタムプロパティは最初に[広告管理コンソール](https://console.adrop.io)の**ターゲティング**メニューで定義する必要があります。

```typescript theme={null}
import { AdropMetrics } from 'adrop-ads-react-native'

// ローカルアクティビティアプリの例
AdropMetrics.setProperty("region", "Tokyo")
AdropMetrics.setProperty("booking_count", 5)

// ショッピングモールアプリの例
AdropMetrics.setProperty("membership_tier", "gold")
AdropMetrics.setProperty("total_purchase_amount", 1500000)

// メディアアプリの例
AdropMetrics.setProperty("favorite_genre", "drama")
AdropMetrics.setProperty("is_premium_subscriber", true)
```

<Warning>
  カスタムプロパティ名はコンソールで定義した名前と完全に一致する必要があります。大文字小文字を区別します。
</Warning>

### プロパティ使用例

アプリにユーザーがログインした際のプロパティ設定例です。

```typescript theme={null}
import React, { useEffect } from 'react'
import { AdropMetrics } from 'adrop-ads-react-native'
import { AdropProperties, AdropGender } from 'adrop-ads-react-native'

const ProfileScreen = () => {
  useEffect(() => {
    // ユーザー情報を取得
    const user = getUserInfo()

    // 組み込みプロパティを設定
    AdropMetrics.setProperty(AdropProperties.BIRTH, user.birthDate)
    AdropMetrics.setProperty(AdropProperties.GENDER, user.gender)

    // カスタムプロパティを設定
    AdropMetrics.setProperty("membership_level", user.membershipLevel)
    AdropMetrics.setProperty("total_booking_count", user.bookingCount)
  }, [])

  return (
    // 画面コンポーネント
  )
}

export default ProfileScreen
```

***

## イベントトラッキング

ユーザー行動イベントを追跡して、ユーザーアクションに基づくオーディエンスを構築できます。`AdropMetrics.sendEvent()`を使用してイベントを送信します。

<Note>
  `logEvent()`は非推奨です。`sendEvent()`を使用してください。
</Note>

### イベント送信

```typescript theme={null}
import { AdropMetrics } from 'adrop-ads-react-native'

// シンプルイベント（パラメータなし）
AdropMetrics.sendEvent('app_open')

// パラメータ付きイベント
AdropMetrics.sendEvent('view_item', {
  item_id: 'SKU-123',
  item_name: 'Widget',
  item_category: 'Electronics',
  brand: 'BrandX',
  price: 29900,
})
```

### マルチアイテムイベント

複数アイテムを含むイベント（例：purchase、begin\_checkout）の場合、パラメータに`items`配列を渡します。

```typescript theme={null}
import { AdropMetrics } from 'adrop-ads-react-native'

AdropMetrics.sendEvent('purchase', {
  tx_id: 'TXN-20240101-001',
  currency: 'KRW',
  items: [
    {
      item_id: 'SKU-001',
      item_name: 'Product A',
      item_category: 'Electronics',
      brand: 'BrandX',
      price: 29900,
      quantity: 1,
    },
    {
      item_id: 'SKU-002',
      item_name: 'Product B',
      price: 15000,
      quantity: 2,
    },
  ],
})
```

### サポートされるイベント例

| イベント名             | 説明          | 主なパラメータ                                                                                    |
| ----------------- | ----------- | ------------------------------------------------------------------------------------------ |
| `app_open`        | アプリを開く      | —                                                                                          |
| `sign_up`         | 会員登録        | `method`                                                                                   |
| `push_clicks`     | プッシュ通知クリック  | `campaign_id`                                                                              |
| `page_view`       | ページ閲覧       | `page_id`, `page_category`, `page_url`                                                     |
| `click`           | 要素クリック      | `element_id`, `element_type`, `target_url`                                                 |
| `view_item`       | アイテム閲覧      | `item_id`, `item_name`, `item_category`, `brand`, `price`                                  |
| `view_content`    | コンテンツ閲覧     | `content_id`, `content_name`, `content_type`                                               |
| `add_to_wishlist` | ウィッシュリストに追加 | `item_id`, `item_name`, `item_category`, `brand`, `price`                                  |
| `add_to_cart`     | カートに追加      | `item_id`, `item_name`, `item_category`, `brand`, `price`, `quantity`, `value`, `currency` |
| `begin_lead_form` | リードフォーム開始   | `form_id`, `form_name`, `form_type`, `form_destination`                                    |
| `generate_lead`   | リード生成       | `form_id`, `form_name`, `form_type`, `form_destination`, `value`, `currency`               |
| `begin_checkout`  | チェックアウト開始   | `currency`, `items`                                                                        |
| `purchase`        | 購入完了        | `tx_id`, `currency`, `items`                                                               |

<Note>
  * イベント名は1〜64文字である必要があります。
  * パラメータキーは1〜64文字である必要があります。
  * 文字列パラメータ値は最大1024文字までです。
</Note>

***

## ベストプラクティス

### 1. 広告ロード前にプロパティを設定

```typescript theme={null}
// 正しい
AdropMetrics.setProperty("membership_level", "premium")
// 広告をロード...

// 間違い
// 広告をロード...
AdropMetrics.setProperty("membership_level", "premium") // 広告ロード後に設定するとターゲティングが適用されない
```

### 2. プロパティ変更時に更新

```typescript theme={null}
import { AdropMetrics } from 'adrop-ads-react-native'

const App = () => {
  useEffect(() => {
    // アプリ起動時に初期プロパティを設定
    updateUserProperties()
  }, [])

  const onUserPurchaseComplete = (purchaseAmount: number) => {
    // 購入完了時にプロパティを更新
    const currentTotal = getCurrentTotalPurchase()
    AdropMetrics.setProperty("total_purchase_amount", currentTotal + purchaseAmount)
  }

  const onMembershipUpgrade = (newTier: string) => {
    // メンバーシップアップグレード時にプロパティを更新
    AdropMetrics.setProperty("membership_tier", newTier)
  }

  // ...
}
```

### 3. ログアウト時にプロパティをリセット

```typescript theme={null}
import { AdropMetrics } from 'adrop-ads-react-native'

const onUserLogout = () => {
  // 必要に応じてプロパティをリセット
  AdropMetrics.setProperty("membership_level", null)
  AdropMetrics.setProperty("total_booking_count", null)
}
```

***

## 関連ドキュメント

<CardGroup cols={2}>
  <Card title="オーディエンスターゲティングの作成" icon="users" href="/ja/targeting/audience">
    コンソールでオーディエンスターゲティングを作成
  </Card>

  <Card title="ターゲティング販売" icon="dollar-sign" href="/ja/targeting/sell">
    ターゲティングカテゴリ販売の設定
  </Card>

  <Card title="バナー広告" icon="rectangle-ad" href="/ja/sdk/react-native/banner">
    バナー広告の実装
  </Card>

  <Card title="ネイティブ広告" icon="mobile" href="/ja/sdk/react-native/native">
    ネイティブ広告の実装
  </Card>
</CardGroup>

***

## FAQ

<AccordionGroup>
  <Accordion title="UIDを設定しないとターゲット広告は表示されませんか？">
    UIDを設定しなくても広告は表示され、プロパティベースのオーディエンスターゲティングも適用されます。UIDはオプションであり、主にクロスプラットフォーム（Web、iOS、Androidなど）間でターゲティング情報を共有するために使用されます。
  </Accordion>

  <Accordion title="プロパティを設定しましたが、コンソールにデータが表示されません。">
    プロパティデータは収集後24時間以内にコンソールに反映されます。データが表示されない場合：

    1. コンソールでプロパティが正しく定義されているか確認してください。
    2. SDKから渡されるプロパティキーがコンソールと完全に一致しているか確認してください（大文字小文字を区別）。
    3. 広告をロードする前に`AdropMetrics.setProperty()`が呼び出されているか確認してください。
  </Accordion>

  <Accordion title="プロパティ値を削除するにはどうすればよいですか？">
    プロパティ値に`null`を渡すと削除できます：

    ```typescript theme={null}
    AdropMetrics.setProperty("membership_level", null)
    ```
  </Accordion>

  <Accordion title="配列タイプのプロパティを設定できますか？">
    React Native SDKは現在、配列タイプを直接サポートしていません。必要に応じて、文字列に変換するか、複数の個別プロパティに分割してください。
  </Accordion>
</AccordionGroup>
