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

# OSNotification ペイロード

> OneSignalのOSNotificationオブジェクトのリファレンス。すべてのペイロードフィールド、AndroidおよびiOS固有のプロパティ、カスタムデータ、クリックアクションを含みます。

`OSNotification`クラスは、OneSignalのSDKにおけるプッシュ通知ペイロードを表します。アプリで通知を処理する際に、通知のタイトル、本文、カスタムデータ、プラットフォーム固有のプロパティにアクセスするために使用します。

<Info>
  プッシュ通知ペイロードは`4096`バイトに制限されています。切り捨てを避けるために、ペイロードを`3500`バイト未満に保ってください。`additionalData`フィールドは`2048`バイトに制限されています。
</Info>

***

## アプリで`OSNotification`にアクセスする

すべてのOneSignal SDKは、`OSNotification`オブジェクトを返す通知イベントリスナーを提供します。

* **Android**: [通知ライフサイクルリスナー](./mobile-sdk-reference#addforegroundlifecyclelistener-push)を使用する
* **iOS**: [通知ライフサイクルリスナー](./mobile-sdk-reference#addforegroundlifecyclelistener-push)または`UNNotificationServiceExtension`を使用する

### Androidフィールド

| Property                     |           Type          | Description                                          |
| ---------------------------- | :---------------------: | ---------------------------------------------------- |
| `getBody()`                  |         `String`        | 通知の本文テキスト。                                           |
| `getTitle()`                 |         `String`        | 通知のタイトル。                                             |
| `getLaunchURL()`             |         `String`        | 通知がクリックされたときに開かれるURL。                                |
| `getNotificationId()`        |         `String`        | OneSignal通知UUID。                                     |
| `getAdditionalData()`        |       `JSONObject`      | ダッシュボードまたはREST API経由で設定されたカスタムキーバリューデータ。最大2048バイト。   |
| `getTemplateId()`            |         `String`        | テンプレートを使用して送信された場合のテンプレートUUID。                       |
| `getAndroidNotificationId()` |          `int`          | Androidネイティブ通知ID。                                    |
| `getLargeIcon()`             |         `String`        | 大きいアイコンのURLまたはリソース名。                                 |
| `getSmallIcon()`             |         `String`        | 小さいアイコンのリソース名。                                       |
| `getSmallIconAccentColor()`  |         `String`        | ARGB形式のアイコンアクセントカラー。                                 |
| `getSound()`                 |         `String`        | 再生されるサウンドリソース名。                                      |
| `getCollapseId()`            |         `String`        | 通知置き換え用のコラプスキー。                                      |
| `getPriority()`              |          `int`          | Androidの優先度（-2から2）。                                  |
| `getLedColor()`              |         `String`        | ARGB形式のLEDカラー。                                       |
| `getLockScreenVisibility()`  |          `int`          | ロック画面の表示設定：`1 = public`、`0 = private`、`-1 = secret`。 |
| `getFromProjectNumber()`     |         `String`        | 送信者のプロジェクト番号。                                        |
| `getGroupedNotifications()`  |  `List<OSNotification>` | サマリーに含まれる通知。                                         |
| `getGroupKey()`              |         `String`        | サマリーで使用されるグループキー。                                    |
| `getGroupMessage()`          |         `String`        | サマリーテキスト。                                            |
| `getBackgroundImageLayout()` | `BackgroundImageLayout` | 背景画像のレイアウトとテキストカラーのオブジェクト。                           |
| `getActionButtons()`         |   `List<ActionButton>`  | アイコン、テキスト、IDを持つアクションボタン。                             |
| `getRawPayload()`            |         `String`        | ペイロードの完全な生JSONストリング。                                 |

### iOSフィールド

| Property           |      Type      | Description                                                    |
| ------------------ | :------------: | -------------------------------------------------------------- |
| `body`             |   `NSString`   | 通知の本文テキスト。                                                     |
| `title`            |   `NSString`   | 通知のタイトル。                                                       |
| `launchURL`        |   `NSString`   | 通知がクリックされたときに開かれるURL。                                          |
| `notificationId`   |   `NSString`   | OneSignal通知UUID。                                               |
| `additionalData`   |  `Dictionary`  | ダッシュボードまたはREST API経由で設定されたカスタムキーバリュー`data`。最大2048バイト。          |
| `templateId`       |   `NSString`   | テンプレートを使用して送信された場合のテンプレートUUID。                                 |
| `subtitle`         |   `NSString`   | サブタイトルテキスト。                                                    |
| `category`         |   `NSString`   | iOSカテゴリ識別子。                                                    |
| `threadId`         |   `NSString`   | 通知をスレッドにグループ化するために使用されます（iOS 10+）。                             |
| `badge`            |   `NSInteger`  | 絶対バッジ値。                                                        |
| `badgeIncrement`   |   `NSInteger`  | バッジを増やす量。                                                      |
| `contentAvailable` |     `BOOL`     | `content-available=1`の場合、バックグラウンドフェッチをトリガーします。                 |
| `mutableContent`   |     `BOOL`     | `mutable-content=1`の場合、Notification Service Extensionをトリガーします。 |
| `actionButtons`    |    `NSArray`   | iOSアクションボタン。                                                   |
| `rawPayload`       | `NSDictionary` | ペイロードの完全な生JSON。                                                |
| `parseWithApns`    |    *Method*    | 生のAPNSペイロードをOSNotificationに変換します。Service Extensionで使用します。      |

***

## `OSNotificationAction`（クリックイベント）

ユーザーの通知に対するインタラクションを記述します。

| Property   |   Type   | Description                                 |
| ---------- | :------: | ------------------------------------------- |
| `actionId` | `String` | クリックされたアクションボタンのID。                         |
| `type`     |  `enum`  | `Opened`（デフォルトタップ）または`ActionTaken`（ボタンタップ）。 |

***

## カスタムOneSignalペイロード構造

すべてのOneSignal通知には、ペイロード内に特別な`"custom"`オブジェクトが含まれています：

```json theme={null}
{
  "custom": {
    "i": "the-notification-id"
  }
}
```

<Info>
  このキーは、OneSignal SDKが通知を処理するために必要です。欠落している場合、通知はクリックイベントや分析をトリガーしません。OneSignalも使用しているデバイスに別のサービスからプッシュを送信する場合は、重複処理を防ぐためにこのキーでフィルタリングしてください。詳細は[プッシュペイロードの処理](./migrating-to-onesignal#push-payload-handling)を参照してください。
</Info>

***

## additionalDataをAPNSルートに移動する

iOSアプリの場合、`additionalData`フィールドを`custom`ディクショナリの内部ではなく、APNSペイロードのルートに配置できます。これにより、カスタム通知ハンドラーでのアクセスが簡単になります。

**1. APIで有効にする**

[Update an app API](/reference/update-an-app)を使用して、次のように設定します：

```json theme={null}
{
  "additional_data_is_root_payload": true
}
```

**2. `data`を使用してプッシュを送信する**

`data`フィールドがAPNSルートペイロードに表示されます：

```json theme={null}
{
  "aps": {
    "alert": { "title": "Sale", "body": "20% off all items!" }
  },
  "promo_code": "SPRING20"
}
```

これで、`custom`ディクショナリを確認せずに`promo_code`に直接アクセスできます。

***

## 復元された通知（Android）

Android SDKは、デバイスの再起動またはアプリの再起動後に通知を復元します。

| Property    |    Type   | Description                      |
| ----------- | :-------: | -------------------------------- |
| `restoring` | `boolean` | デバイス/アプリの再起動後に通知が復元された場合は`true`。 |

<Tip>
  `restoring`フラグを確認して、復元された通知をスキップしてください。古い通知が完全に復元されないようにするには、送信時に短いまたは`0`のTTL（time-to-live）を設定してください。
</Tip>

***

## プッシュトークンの形式

* **iOS Push (APNS)**: 64文字、16進数のみ（0-9、a-f）。`deviceToken.map {String(format: "%02x", $0)}.joined()`
* **Android Push (FCM)**: 通常163文字、英数字で、ハイフン、コロン、アンダースコアを含む場合があります。

***

## FAQ

### ペイロードの最大サイズは？

プッシュ通知ペイロードの合計は4096バイトに制限されています。`additionalData`フィールドは2048バイトに制限されています。切り捨てを避けるために、ペイロードの合計を3500バイト未満に保ってください。

### 生のペイロードでOneSignal通知を識別するには？

すべてのOneSignal通知には、通知IDを含む`"i"`キーを持つ`"custom"`オブジェクトが含まれています。このキーを確認することで、OneSignal通知と他のプロバイダーから送信された通知を区別できます。

### APNSルートペイロードでadditionalDataにアクセスできますか？

はい。[Update an app API](/reference/update-an-app)経由で`additional_data_is_root_payload`を有効にすると、`additionalData`フィールドを`custom`ディクショナリの内部ではなくAPNSルートに配置できます。詳細は[additionalDataをAPNSルートに移動する](#move-additionaldata-to-apns-root)を参照してください。

***

<Columns cols={3}>
  <Card title="Android通知カテゴリ" icon="android" href="./android-notification-categories">
    Android 8.0以降のデバイス向けに通知チャンネルを設定します。
  </Card>

  <Card title="モバイルService Extensions" icon="puzzle-piece" href="./service-extensions">
    リッチメディア、バッジ、および配信確認トラッキングを追加します。
  </Card>

  <Card title="モバイルSDKリファレンス" icon="code" href="./mobile-sdk-reference">
    OneSignalのモバイルSDKメソッドとリスナーの完全なリファレンス。
  </Card>
</Columns>
