# Unity の詳細設定

> ユーザー セグメント、カスタム パラメーター、価格帯など、Unityの高度な設定を行い、広告の配信とMonetizationを最適化します。

## セグメントの定義##define-segments

特定のオーディエンスに合わせて広告の配信方法を簡単に調整できるようになりました。ユーザーの詳細をサーバーに通知して、ユーザーが属するセグメントに応じてSDKが広告を配信するようにする必要があります。

LevelPlay SDK は、データをサーバーに送信してユーザーセグメントのアウトラインを作成する 3 つの方法をサポートしています。

* **デバイスプロパティ**: LevelPlay SDK は、デバイスモデル、デバイス製造元、アプリケーションバージョン、OS など、ユーザーのデバイスに関連する特定の標準パラメータを自動的に収集します。このデータを当社に送信する必要はありません
* **ユーザープロパティ**: SDKによって収集されないユーザーデータ(例えば、年齢、性別、作成日)は、APIを通じてリレーする必要があります。（サポートされているセグメント プロパティの全リストと以下のセクションの説明を参照してください）。指示に従ってこれらの詳細を送信し、LevelPlay プラットフォームで定義したセグメントに関連する広告設定を SDK が適用できるようにします。
* **カスタムセグメント**: ユーザーの詳細をサーバに送信せずにカスタムセグメントを作成し、そのユーザーセグメントの広告設定を調整できます。

> **Note:**
>
> **動的セグメント化:** LevelPlay SDK 7.2.0 を使用している場合は、LevelPlaySegment API を使用してセッション中にセグメント化を変更できます。これは次にロードされる広告に影響し、各広告単位をロードする前に呼び出すことでウォーターフォールに動的に影響します。LevelPlay のセグメント化の詳細については、[こちら](/grow/levelplay/platform/settings/segments.md)を参照してください。

### Pass ユーザープロパティ##pass-user-properties

LevelPlay プラットフォームでセグメントを定義したら、サーバーにユーザーの詳細情報を通知する必要があります。

セグメントのベースとなるサーバーに送信するプロパティを定義します。この情報は以下の**いずれ**かの方法で送信できます。

1. ユーザーが属するセグメントがわかっている場合は、新しいセグメントを作成し、そのセグメント名を設定します。

   ```cs
   var segment = new LevelPlaySegment();
   segment.SegmentName = "nameOfSegment";
   ```

2. それ以外の場合は、ユーザーの詳細をお送りください。LevelPlay には、API でユーザーをセグメントにアトリビュートするように設定できる、範囲な標準ユーザープロパティが用意されています。スクロールダウンして、サポートされているユーザーセグメントプロパティの表を参照します。

   ```cs
   var segment = new LevelPlaySegment();
   segment.Level = 5;
   segment.UserCreationDate = 1758100075134;
   segment.IapTotal = 100;
   segment.IsPaying = 1;
   ```

   セグメントごとに最大5つのカスタムユーザープロパティを設定することもできます。

   ```cs
   var key = "key1";
   var val = "value1";

   var segment = new LevelPlaySegment();
   segment.SetCustom(key, val);
   ```

   最後に、以下の機能を呼び出し、新しく作成したセグメントを渡します。

   ```cs
   LevelPlay.SetSegment(segment);
   ```

### サポートされるユーザーセグメントプロパティ##supported-user-segment-properties

| **セグメントプロパティ**   | **Type (タイプ)**           | **制限**                                                  | **説明**                                                                      |
| ---------------- | ------------------------ | ------------------------------------------------------- | --------------------------------------------------------------------------- |
| SegmentName      | String                   | 最大 32 文字の英数字                                            | LevelPlay アカウントのセグメントの指定された名前                                               |
| IsPaying         | Int                      | 0 または 1                                                 | 1 ユーザーがアプリ内課金に課金した場合は 0 ユーザーがアプリ内課金に課金しなかった場合                               |
| IapTotal         | ダブル                      | 1-999999.99                                             | ユーザーがアプリケーション内課金に費やした金額の合計                                                  |
| UserCreationDate | ロング                      | 0 より小さい値にすることはできません                                     | ユーザーがアプリケーションをインストールした日付。例: DateTimeOffset.UtcNow\.ToUnixTimeMilliseconds() |
| カスタムパラメーター       | key=string, value=string | LevelPlay は最大 5 つのカスタムパラメーターをサポートし、最大 32 文字の英数字を使用できます。 | サーバにディスパッチする追加データ                                                           |

## リワードサーバーからサーバーへのコールバックのカスタムパラメーター##custom-parameters-for-rewarded-server-to-server-callbacks

LevelPlay 報酬ベースの広告ユニットは、広告完了イベントの成功後にユーザーに付与する必要があるゲーム内報酬を通知するサーバー側のイベントをサポートします。詳細については[、こちら](/grow/levelplay/platform/settings/server-to-server-callback.md)を参照してください。

サーバーパラメーターに加えて、実行時のカスタムパラメーターをクライアント経由で共有できます。これを実装するには、setMetadata API を使用してカスタムパラメーターを LevelPlay\_Rewarded\_Server\_Params に渡すだけです。カスタムパラメーターは、以前の値をオーバーライドして、セッションを通じて複数回更新できます。

カスタム パラメータをリセットするには、LevelPlay\_Rewarded\_Server\_Params を空の配列に設定します。

### 実装コード例##example-implementation-code

> **Note:**
>
> Min LevelPlay SDK 8.11.0

```cs
LevelPlay.SetMetaData("LevelPlay_Rewarded_Server_Params", new [] { "key1=value1", "key2=value2" });
```

その後、以下に示すように、対応するコールバックを受け取ります。

```text
http://www.mydomain.com/rewardsCallback?appUserId=[ユーザー ID]&ゲーム内報酬=[ゲーム内報酬]&eventId=[イベント ID]&itemName=[項目名]&custom_key1=値1&custom_key2=値2
```

## ゲームの一時停止##pause-game

API SetPauseGame は LevelPlay SDK バージョン 8.5.0 の一部として LevelPlay クラスに導入され、iOS アプリケーションにのみ関連します。

PauseGame状態をtrueに設定すると、Unity 3Dゲームのすべてのアクティビティが一時停止されます(広告コールバックを除く)。広告が閉じられると、ゲームアクティビティが自動的に再開されます。

SetPauseGame API は、LevelPlay SDK の初期化の前または後に、セッション内のすべての広告 (複数の AdUnit API の動画リワード広告とインタースティシャル広告) に影響するため、セッション内で 1 回呼び出しする必要があります。

```cs
LevelPlay.SetPauseGame(true);
```

このセッションでこの機能を無効にするには、値を false にして SetPauseGame を呼び出します。

```cs
LevelPlay.SetPauseGame(false);
```

古い機能 LevelPlay SDK（7.2.4 から 8.4.0 まで）では、以下の API を使用します。

```cs
// Pause all game activities except ad callbacks. The game activity will be resumed automatically when the ad is closed
LevelPlay.SetPauseGame(true);

// Deactivate the functionality in this session
LevelPlay.SetPauseGame(false);
```

## Price Floor設定##price-floor-configuration

フロア設定 API では、特定の広告単位に下限を設定できます。ユーザーごとに最低価格を設定することで、ターゲティングの効率を高め、待ち時間を削減し、広告パフォーマンスを最適化できます。

価格下限は広告オブジェクトの作成時に割り当てる必要があり、そのオブジェクトのその後のすべてのロードに適用されます。

> **Note:**
>
> Min LevelPlay パッケージ 8.9.0

| **プロパティ** | **Type (タイプ)** | **説明**                                  |
| --------- | -------------- | --------------------------------------- |
| 入札フロア     | double         | 従来のインスタンスと入札者に適用される最小 eCPM を定義する米ドルの価格。 |

### インタースティシャル広告の例##interstitial-ads-example

```cs
// Define a price floor configuration
var adConfig = new LevelPlayInterstitialAd.Config.Builder()
   .SetBidFloor(1.23) // 米ドルで下限を設定します
   .Build()
// Apply the configuration to an interstitial ad unit
var interstitialAd = new LevelPlayInterstitialAd("adUnitId", adConfig);
```

インタースティシャルの完全な実装は[、こちら](/grow/levelplay/sdk/unity/interstitial-integration.md)で利用できます。

### リワード広告の例##rewarded-ads-example

```cs
// Define a price floor configuration
var adConfig = new LevelPlayRewardedAd.Config.Builder()
   .SetBidFloor(1.23) // 米ドルで下限を設定します
   .Build()
// Apply the configuration to a rewarded ad unit
var rewardedAd = new LevelPlayRewardedAd("adUnitId", adConfig);
```

リワード広告の完全実装は[、こちら](/grow/levelplay/sdk/unity/rewarded-ad-integration-package.md)で利用できます。

#### バナー広告の例##banner-ads-example

```cs
// Define a price floor configuration
var adConfig = new LevelPlayBannerAd.Config.Builder()
   .SetBidFloor(1.23) // 米ドルで下限を設定します
   .Build();
// Apply the configuration to a banner ad unit
var bannerAd = new LevelPlayBannerAd("adUnitId", adConfig);

```

バナー広告の完全な実装は[、こちら](/grow/levelplay/sdk/unity/banner-integration.md)で利用できます。

## LevelPlay SDK のエラーコード##levelplay-sdk-error-codes

LevelPlay は、SDK インテグレーションでのすべての失敗を説明するエラーフィードバックメカニズムを提供します。これらのエラーは、問題が発生したときやインテグレーションのアスペクトが正しく完了しなかったときに発生します。

LevelPlay Error オブジェクトには、**エラー コード**と**メッセージ**が含まれます。以下は、考えられるすべてのエラーと、その機能に基づくメッセージです。

| エラーコード | 広告ユニット                | 説明                                                                                                             |
| ------ | --------------------- | -------------------------------------------------------------------------------------------------------------- |
| 508    | N/A                   | * メディエーション/ネットワークの初期化失敗
* Demand Only API を非 Demand Only モードで呼び出す
* Demand Only モードで Demand Only 以外の API を呼び出す |
| 509    | インタースティシャル、動画リワード     | **Show Fail**:No ads to show                                                                                   |
| 510    | インタースティシャル、動画リワード、バナー | **ロード失敗**:サーバー反応失敗                                                                                             |
| 520    | インタースティシャル、動画リワード     | **Show Fail**:インターネット接続なし。TrackNetworkState が有効になっている必要があります。&#xA;**Show Fail**:インターネット接続なし                    |
| 524    | インタースティシャル、動画リワード     | **Show Fail**:配置%@ はペースごとに定義された制限に達しました&#xA;**Show Fail**:配置%@ が制限に達しました                                       |
| 526    | インタースティシャル、動画リワード     | **Show Fail**:広告単位がセッションあたりの 1 日の上限に達しました                                                                      |
| 604    | バナー                   | 配置に上限があるためロードできません                                                                                             |
| 605    | バナー                   | バナーのロード中に予期しない例外が発生しました                                                                                        |
| 606    | バナー                   | 最初のロード時にすべてのネットワークでバナーが埋められない                                                                                  |
| 1007   | インタースティシャル、動画リワード     | **オークション失敗**:オークションリクエストに必要な情報がすべて含まれていませんでした                                                                  |
| 1022   | 動画リワード                | **Show Fail**:別の RV が表示されている間は RV を表示できない                                                                      |
| 1023   | 動画リワード                | **Show Fail**:Show RV called when there are no available ads to show                                           |
| 1035   | インタースティシャル            | **Empty Waterfall**                                                                                            |
| 1036   | インタースティシャル            | **Show Fail**:別のインタースティシャルが表示されている間はインタースティシャルを表示できない                                                          |
| 1037   | インタースティシャル            | **ロード失敗**:別のインタースティシャルが表示されている間はインタースティシャルをロードできません                                                            |
| 1039   | インタースティシャル            | show interstitial                                                                                              |
