メインコンテンツへスキップ
OSNotificationクラスは、OneSignalのSDKにおけるプッシュ通知ペイロードを表します。アプリで通知を処理する際に、通知のタイトル、本文、カスタムデータ、プラットフォーム固有のプロパティにアクセスするために使用します。
プッシュ通知ペイロードは4096バイトに制限されています。切り捨てを避けるために、ペイロードを3500バイト未満に保ってください。additionalDataフィールドは2048バイトに制限されています。

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

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

Androidフィールド

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

iOSフィールド

PropertyTypeDescription
bodyNSString通知の本文テキスト。
titleNSString通知のタイトル。
launchURLNSString通知がクリックされたときに開かれるURL。
notificationIdNSStringOneSignal通知UUID。
additionalDataDictionaryダッシュボードまたはREST API経由で設定されたカスタムキーバリューdata。最大2048バイト。
templateIdNSStringテンプレートを使用して送信された場合のテンプレートUUID。
subtitleNSStringサブタイトルテキスト。
categoryNSStringiOSカテゴリ識別子。
threadIdNSString通知をスレッドにグループ化するために使用されます(iOS 10+)。
badgeNSInteger絶対バッジ値。
badgeIncrementNSIntegerバッジを増やす量。
contentAvailableBOOLcontent-available=1の場合、バックグラウンドフェッチをトリガーします。
mutableContentBOOLmutable-content=1の場合、Notification Service Extensionをトリガーします。
actionButtonsNSArrayiOSアクションボタン。
rawPayloadNSDictionaryペイロードの完全な生JSON。
parseWithApnsMethod生のAPNSペイロードをOSNotificationに変換します。Service Extensionで使用します。

OSNotificationAction(クリックイベント)

ユーザーの通知に対するインタラクションを記述します。
PropertyTypeDescription
actionIdStringクリックされたアクションボタンのID。
typeenumOpened(デフォルトタップ)またはActionTaken(ボタンタップ)。

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

すべてのOneSignal通知には、ペイロード内に特別な"custom"オブジェクトが含まれています:
{
  "custom": {
    "i": "the-notification-id"
  }
}
このキーは、OneSignal SDKが通知を処理するために必要です。欠落している場合、通知はクリックイベントや分析をトリガーしません。OneSignalも使用しているデバイスに別のサービスからプッシュを送信する場合は、重複処理を防ぐためにこのキーでフィルタリングしてください。詳細はプッシュペイロードの処理を参照してください。

additionalDataをAPNSルートに移動する

iOSアプリの場合、additionalDataフィールドをcustomディクショナリの内部ではなく、APNSペイロードのルートに配置できます。これにより、カスタム通知ハンドラーでのアクセスが簡単になります。 1. APIで有効にする Update an app APIを使用して、次のように設定します:
{
  "additional_data_is_root_payload": true
}
2. dataを使用してプッシュを送信する dataフィールドがAPNSルートペイロードに表示されます:
{
  "aps": {
    "alert": { "title": "Sale", "body": "20% off all items!" }
  },
  "promo_code": "SPRING20"
}
これで、customディクショナリを確認せずにpromo_codeに直接アクセスできます。

復元された通知(Android)

Android SDKは、デバイスの再起動またはアプリの再起動後に通知を復元します。
PropertyTypeDescription
restoringbooleanデバイス/アプリの再起動後に通知が復元された場合はtrue
restoringフラグを確認して、復元された通知をスキップしてください。古い通知が完全に復元されないようにするには、送信時に短いまたは0のTTL(time-to-live)を設定してください。

プッシュトークンの形式

  • 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経由でadditional_data_is_root_payloadを有効にすると、additionalDataフィールドをcustomディクショナリの内部ではなくAPNSルートに配置できます。詳細はadditionalDataをAPNSルートに移動するを参照してください。