メインコンテンツへスキップ

セットアップとデバッグ

これらのメソッドは、アプリにOneSignal SDKを統合するためのリファレンスです。プラットフォーム固有の完全なセットアップ手順については、モバイルSDKセットアップを参照してください。

initialize()

OneSignal SDKを初期化します。これはアプリケーションの起動時に呼び出す必要があります。ONESIGNAL_APP_IDキーとIDで確認できます。
OneSignal SDKの初期化を遅延させたい場合は、プライバシーメソッドの使用をお勧めします。
OneSignal.initWithContext(this, ONESIGNAL_APP_ID)

setLogLevel()

Android LogCatまたはXcodeログに追加のログを出力するようにログ記録を設定します。 OneSignalを初期化する前にこれを呼び出します。詳細については、デバッグログの取得を参照してください。
// LogLevel: .None | .Fatal | .Error | .Warn | .Info | .Debug | .Verbose
OneSignal.Debug.logLevel = LogLevel.Verbose

setAlertLevel()

アプリでアラートダイアログとして表示するログレベルを設定します。アプリストアに提出する前に、これを必ず削除してください。
OneSignal.Debug.alertLevel = LogLevel.Exception

ユーザーIDとプロパティ

ユーザーがアプリを開くと、OneSignalは自動的にOneSignal ID(ユーザーレベル)とサブスクリプションID(デバイスレベル)を作成します。一意のユーザー識別子を使用してlogin()を呼び出すことで、複数のサブスクリプション(デバイス、メール、電話番号など)を単一のユーザーに関連付けることができます。
詳細については、ユーザーエイリアスを参照してください。

login(external_id)

提供されたexternal_idにユーザーコンテキストを設定します。このexternal_idに関連付けられたすべてのサブスクリプションとプロパティが単一のonesignal_idの下に統合されることを保証します。詳細については、ユーザーを参照してください。 主な動作:
  • external_idが既に存在する場合、SDKはそのユーザーに切り替えます。ログイン前に収集された匿名データはマージされず、破棄されます。
  • external_idが存在しない場合、ローカル状態は現在のonesignal_idの下に保存されます。ユーザーが匿名だった間に収集されたデータは保持されます。
  • SDKはネットワーク障害またはサーバーエラーで自動的に再試行します。
ユーザーがアプリを開くたびにこのメソッドを呼び出して、外部IDが設定され、サブスクリプションがユーザーにリンクされていることを確認してください。
OneSignal.login("external_id")

logout()

現在のユーザーをサブスクリプションからリンク解除します。
  • 現在のプッシュサブスクリプションからexternal_idを削除します。
  • OneSignal IDを新しい匿名ユーザーにリセットします。
  • 新しいデータ(タグ、サブスクリプション、セッションデータなど)は、loginメソッドで識別されるまで、新しい匿名ユーザーに設定されます。
サブスクリプションを新しい匿名ユーザーに設定する場合、ユーザーがアプリからサインアウトするときにこれを使用します。
OneSignal.logout()

getOnesignalId()

デバイスにローカルに保存されている現在のユーザーのOneSignal IDを取得します。ユーザー状態が初期化される前に呼び出された場合、nullになる可能性があります。代わりに、ユーザー状態addObserver()を使用してユーザー状態の変更をリッスンしてください。
val id = OneSignal.User.onesignalId

getExternalId()

デバイスにローカルに保存されている現在のユーザーの外部IDを取得します。loginメソッドで設定されていない場合、またはユーザー状態が初期化される前に呼び出された場合、nullになる可能性があります。代わりに、ユーザー状態addObserver()を使用してユーザー状態の変更をリッスンしてください。
  val id = OneSignal.User.externalId

addObserver() ユーザー状態

ユーザーコンテキストの変更(ログイン、ログアウト、ID割り当てなど)をリッスンします。
OneSignal.User.addObserver(object : IUserStateObserver {
    override fun onUserStateChange(state: UserChangedState) {
        println("User State Changed: onesignalId=${state.current.onesignalId}, externalId=${state.current.externalId}")
    }
})

addAlias(), addAliases(), removeAlias(), removeAliases()

エイリアスは代替識別子(ユーザー名やCRM IDなど)です。
  • エイリアスを追加する前に、login()external_idを設定してください。external_idなしでサブスクリプションに追加されたエイリアスは、複数のサブスクリプション間で同期されません。
  • 詳細については、エイリアスを参照してください。
// Add a single alias
OneSignal.User.addAlias("ALIAS_LABEL", "ALIAS_ID")

// Add multiple aliases
var aliases = mapOf("ALIAS_LABEL_01" to "ALIAS_ID_01", "ALIAS_LABEL_02" to "ALIAS_ID_02")
OneSignal.User.addAliases(aliases)

// Remove a single alias
OneSignal.User.removeAlias("ALIAS_LABEL")

// Remove multiple aliases
OneSignal.User.removeAliases(["ALIAS_LABEL_01", "ALIAS_LABEL_02"])

setLanguage()

ユーザーの自動検出された言語を上書きします。ISO 639-1言語コードを使用してください。
OneSignal.User.setLanguage("en")

カスタムイベント

カスタムイベントを介してJourneysをトリガーし、Wait Untilステップのアクティベーションを行います。
カスタムイベントはまだベータ版であり、アプリからトリガーするには次のバージョンのSDKが必要です:
  • iOS ネイティブSDK、5.4.0-alpha-01から利用可能
  • Android ネイティブSDK、5.3.0-alpha-01から利用可能
  • React-native SDK、5.3.0-beta-01から利用可能
  • Flutter SDK、5.4.0-beta-01から利用可能
現在のユーザーが実行したカスタムイベントを追跡して送信します。
  • name - 必須。 イベントの名前を文字列として指定します。
  • properties - オプション。 イベントに追加するキーと値のペア。propertiesディクショナリまたはマップは有効なJSONオブジェクトにシリアライズ可能である必要があります。ネストされた値をサポートします。
SDKは、予約キーos_sdkの下にアプリ固有のデータをpropertiesペイロードに自動的に含めます。これは利用可能になります。たとえば、デバイスタイプ別にイベントをターゲティングするには、os_sdk.device_typeにアクセスします。
json
{ 
  "os_sdk": { 
    "sdk": "050213", 
    "device_os": "18.5", 
    "type": "iOSPush", 
    "device_model": "iPhone14,4", 
    "device_type": "ios", 
    "app_version": "5.4.0" 
  }
}

trackEvent()

詳細については、カスタムイベントを参照してください。
// You can track an event by name without additional properties
OneSignal.User.trackEvent("my_event_name")

// You can track an event by name with additional properties
OneSignal.User.trackEvent(
   name = "started_free_trial",
   properties = mapOf(
       "promo_code" to "NEW50",
       "membership_details" to mapOf(
           "vip" to true,
           "products_viewed_count" to 15
       )
   )
)

データタグ

タグは、イベントまたはユーザープロパティに基づいてユーザーに設定するカスタムkey : valueペアの文字列データです。詳細については、データタグを参照してください。

addTag(), addTags()

現在のユーザーに単一または複数のタグを設定します。
  • キーが既に存在する場合、値は置き換えられます。
  • プランのタグ制限を超えると、操作は静かに失敗します。
OneSignal.User.addTag("KEY", "VALUE")

OneSignal.User.addTags(mapOf("KEY_01" to "VALUE_01", "KEY_02" to "VALUE_02"))

removeTag(), removeTags()

現在のユーザーから単一または複数のタグを削除します。
OneSignal.User.removeTag("KEY")

OneSignal.User.removeTags(listOf("KEY_01", "KEY_02"))

getTags()

ユーザーのタグのローカルコピーを返します。タグは、login()または新しいアプリセッション中にサーバーから更新されます。
val tags: Map<String, String> = OneSignal.User.getTags()

プライバシー

setConsentRequired()

データ収集を開始する前にユーザーの同意を強制します。SDKを初期化する前に呼び出す必要があります。
OneSignal.consentRequired = true

setConsentGiven()

データ収集のためのユーザーの同意を付与または取り消します。同意がない場合、データはOneSignalに送信されず、サブスクリプションは作成されません。
  • setConsentRequired()trueの場合、setConsentGiventrueで呼び出されるまで、SDKは完全に有効になりません。
  • setConsentGiventrueに設定されてサブスクリプションが作成され、後でfalseに設定された場合、そのサブスクリプションは更新を受信しなくなります。そのサブスクリプションの現在のデータは、setConsentGivenが再度trueに設定されるまで変更されません。
  • ユーザーやサブスクリプションのデータを削除したい場合は、ユーザーを削除またはサブスクリプションを削除 APIを使用してください。
OneSignal.consentGiven = true

位置情報

位置情報ポイントの追跡には3つのステップが必要です:
  1. アプリに位置情報追跡の権限と依存関係を追加します。
次のエラーが発生する場合があります:
LocationManager.startGetLocation: not possible, no location dependency found
アプリの依存関係を確認してください。一般的な解決策は、app/build.gradleに次を追加することです:implementation 'com.google.android.gms:play-services-location:21.0.1'
  1. Location.setShared()メソッドを使用して、アプリがOneSignalと位置情報を共有できるようにします。
  2. Location.requestPermissionメソッドで位置情報追跡の権限をユーザーにリクエストするか、アプリ内メッセージを使用します。

setShared() 位置情報

このメソッドを使用して、SDKがサブスクリプションの緯度と経度の追跡を開始できるようにします。最初にアプリで適切な位置情報の権限を設定していることを確認してください。
// Enable your app to share location with OneSignal
OneSignal.Location.isShared = true

// Returns true if your app is sharing location with OneSignal
var isShared: Boolean = OneSignal.isShared

requestPermission() 位置情報

このメソッドを使用して、ユーザーにシステムレベルの位置情報権限プロンプトを表示するか、代わりにアプリ内メッセージを使用します。アプリで適切な位置情報の権限を設定し、アプリがOneSignalと位置情報を共有できるようにしていることを確認してください。
// Request location tracking permissions
OneSignal.Location.requestPermission(true)

サブスクリプション

詳細については、サブスクリプションを参照してください。

User.pushSubscription.id

デバイスにローカルに保存されている現在のユーザーのプッシュサブスクリプションIDを取得します。早期に呼び出された場合、nullを返す可能性があります。変更に対応するために、サブスクリプションオブザーバー内でこのデータを取得することをお勧めします。
val id = OneSignal.User.pushSubscription.id

User.pushSubscription.token

現在のプッシュサブスクリプショントークンを返します。早期に呼び出された場合、nullを返す可能性があります。変更に対応するために、サブスクリプションオブザーバー内でこのデータを取得することをお勧めします。
val pushToken = OneSignal.User.pushSubscription.token

addObserver() プッシュサブスクリプションの変更

このメソッドを使用して、次のようなプッシュサブスクリプションの変更に対応します:
  • デバイスがGoogle(FCM)またはApple(APNs)から新しいプッシュトークンを受信
  • OneSignalがサブスクリプションIDを割り当て
  • optedIn値が変更(例:optIn()またはoptOut()が呼び出された)
  • ユーザーがシステム設定でプッシュ権限を切り替えてからアプリを開く
これが発生すると、SDKはonPushSubscriptionChangeイベントをトリガーします。リスナーはpreviouscurrentの値を持つ状態オブジェクトを受け取るため、何が変更されたかを正確に検出できます。 更新のリスニングを停止するには、関連するremoveObserver()またはremoveEventListener()メソッドを呼び出します。
class MyObserver : IPushSubscriptionObserver {
  init {
    OneSignal.User.pushSubscription.addObserver(this)
  }

  override fun onPushSubscriptionChange(state: PushSubscriptionChangedState) {
    if (state.current.optedIn) {
      println("User is now opted-in with push token: ${state.current.token}")
    }
  }
}

// Remove the observer
OneSignal.User.pushSubscription.removeObserver(this)

optOut(), optIn(), optedIn

現在のプッシュサブスクリプションのサブスクリプションステータス(subscribedまたはunsubscribed)を制御します。これらのメソッドを使用して、アプリ内のプッシュサブスクリプションステータスを制御します。一般的な使用例:1)ログアウトしたユーザーへのプッシュ送信を防ぐ。2)アプリ内に通知設定センターを実装する。
  • optOut():現在のプッシュサブスクリプションステータスをunsubscribedに設定します(ユーザーが有効なプッシュトークンを持っている場合でも)。
  • optIn():次の3つのアクションのいずれかを実行します:
    1. サブスクリプションに有効なプッシュトークンがある場合、現在のプッシュサブスクリプションステータスをsubscribedに設定します。
    2. サブスクリプションに有効なプッシュトークンがない場合、プッシュ権限プロンプトを表示します。
    3. プッシュ権限プロンプトがオペレーティングシステムの制限(iOS:1回、Android:2回)を超えて表示されている場合、フォールバックプロンプトを表示します。

設定プロンプトへのフォールバック

  • optedIn:現在のプッシュサブスクリプションステータスがsubscribedの場合はtrueを返し、それ以外の場合はfalseを返します。プッシュトークンが有効でもoptOut()が呼び出された場合、これはfalseを返します。
OneSignal.User.pushSubscription.optOut()

OneSignal.User.pushSubscription.optIn()

val optedIn = OneSignal.User.pushSubscription.optedIn

addEmail(), removeEmail()

現在のユーザーにメールサブスクリプション(メールアドレス)を追加または削除します。正しいユーザーコンテキストを設定するために、login()の後にaddEmailを呼び出してください。ID検証と互換性があります。
OneSignal.User.addEmail("example@email.com")

OneSignal.User.removeEmail("example@email.com")

addSms(), removeSms()

現在のユーザーにSMSサブスクリプション(電話番号)を追加または削除します。E.164形式が必要です。正しいユーザーコンテキストを設定するために、login()の後にaddSmsを呼び出してください。ID検証と互換性があります。
OneSignal.User.addSms("+15558675309")

OneSignal.User.removeSms("+15558675309")

プッシュ権限

requestPermission(fallbackToSettings) プッシュ

ユーザーにプッシュ通知権限を求めるネイティブシステムプロンプトを表示します。オプションで、設定アプリにリンクするフォールバックプロンプトを有効にできます。
  • fallbackToSettingstrueの場合、ユーザーがオペレーティングシステムの制限(iOS:1回、Android:2回)を超えてプッシュ権限を拒否した場合、フォールバックプロンプトが表示されます。

権限がブロックされたときの設定へのフォールバックプロンプト

詳細については、プッシュ権限のプロンプトを参照してください。
// We recommend removing this method after testing and instead use In-App Messages to prompt for notification permission.
// Passing true will fallback to setting prompt if the user denies push permissions
OneSignal.Notifications.requestPermission(true)

addPermissionObserver() プッシュ

このメソッドを使用して、次のようなプッシュ権限の変更を追跡します:
  • ユーザーに通知権限プロンプトが表示されます。
  • ユーザーが権限プロンプトを受け入れるまたは拒否します。
  • ユーザーがデバイスのアプリ設定でアプリの通知を有効または無効にしてから、アプリに戻ります。
これが発生すると、SDKはonOSPermissionChangedイベントをトリガーします。リスナーはfromtoの値を持つ状態オブジェクトを受け取るため、何が変更されたかを正確に検出できます。 更新のリスニングを停止するには、関連するremovePermissionObserver()メソッドを呼び出します。
class MyObserver : IPermissionObserver {
  init {
    OneSignal.Notifications.addPermissionObserver(this)
  }

  override fun onNotificationPermissionChange(granted: Boolean) {
    if (granted) {
      // Notifications are now enabled
    }
  }

  fun cleanup() {
    OneSignal.Notifications.removePermissionObserver(this)
  }
}

getPermission(), getCanRequestPermission()

getPermission()は、アプリレベルの現在のプッシュ権限ステータスを返します。optOut()またはUsers and Subscriptions APIのenabledパラメータで変更した場合、OneSignalレベルのサブスクリプションステータスは考慮されません。getPermission()を使用する代わりに、アプリの実行中にデバイスの通知権限ステータスの変更を追跡するにはプッシュ権限オブザーバーを使用するか、プッシュサブスクリプションステータスの変更を追跡するにはプッシュサブスクリプションオブザーバーを使用することをお勧めします。 getCanRequestPermission()は、権限のリクエストを試みると、ユーザーにプロンプトが表示されるかどうかを返します。falseの場合、ユーザーは既に権限を拒否しており、フォールバックプロンプトまたはプロンプトなしのいずれかを表示できます。詳細については、プッシュ権限のプロンプトを参照してください。
// true if the app has permission to display notifications
OneSignal.Notifications.permission

// true if the device can display system notification permission prompt
val canRequest: Boolean = OneSignal.Notifications.canRequestPermission

permissionNative iOS

iOSデバイスのネイティブ権限の列挙型を返します。次のいずれかになります:
  • 0 = NotDetermined(未決定)
  • 1 = Denied(拒否)
  • 2 = Authorized(承認)
  • 3 = Provisional(プロビジョナル、iOS 12+でのみ利用可能)
  • 4 = Ephemeral(エフェメラル、iOS 14+でのみ利用可能)
let permissionNative: OSNotificationPermission = OneSignal.Notifications.permissionNative.rawValue

プッシュ通知イベント

addClickListener() プッシュ

ユーザーがアプリを開くプッシュ通知をクリックしたときに実行されるコールバックを設定します。 このイベントが発生する時点で、アプリのアクティビティまたはシーンは既に起動しています。このハンドラーを使用してカスタムロジックを実行します。アプリのナビゲーションを手動で再起動または複製しないでください。 ハンドラーが不要になったらリスニングを停止するには、removeClickListener()またはremoveEventListener()を使用します。
val clickListener = object : INotificationClickListener {
  override fun onClick(event: INotificationClickEvent) {
    Log.d("OneSignal", "Notification clicked: ${event.notification.title}")
  }
}
OneSignal.Notifications.addClickListener(clickListener)

addForegroundLifecycleListener() プッシュ

アプリがフォアグラウンドにあるときに通知がどのように動作するかをインターセプトして制御できます。 デフォルトでは、OneSignalは自動的に通知を表示します。event.preventDefault()を使用してこの動作を上書きできます:
  • 通知を抑制
  • カスタマイズ
  • 非同期ロジックのために表示を遅延(例:ユーザー状態の取得、イベントのログ)
後で手動で表示するには、event.notification.display()を呼び出します。
これは、表示前にペイロードを変更する通知サービス拡張機能に実行されます。
ハンドラーが不要になったらリスニングを停止するには、removeForegroundLifecycleListener()またはremoveEventListener()を使用します。
val lifecycleListener = object : INotificationLifecycleListener {
  override fun onWillDisplay(event: INotificationWillDisplayEvent) {
    Log.d("OneSignal", "Foreground notification: ${event.notification.title}")
    // Uncomment to prevent the notification from being displayed while in the foreground
    // event.preventDefault()
  }
}
OneSignal.Notifications.addForegroundLifecycleListener(lifecycleListener)

clearAllNotifications()

通知シェードからすべてのOneSignal通知を削除します。Androidのandroid.app.NotificationManager.cancelの代わりに使用してください。そうしないと、アプリを再起動したときに通知が復元されます。
OneSignal.Notifications.clearAllNotifications()

removeNotification() Android

Android通知IDに基づいて単一の通知をキャンセルします。 Androidのandroid.app.NotificationManager.cancelの代わりに使用してください。そうしないと、アプリを再起動したときに通知が復元されます。
OneSignal.Notifications.removeNotification(id)

removeGroupedNotifications() Android

提供されたグループキーを持つOneSignal通知のグループをキャンセルします。通知のグループ化はOneSignalの概念です。android.app.NotificationManagerに相当するものはありません。
OneSignal.Notifications.removeGroupedNotifications("GROUP_KEY")

アプリ内メッセージ

アプリ内メッセージにはコードは必要ありませんが、SDKを使用すると、メッセージが表示されるタイミングをカスタマイズし、ライフサイクルイベントを処理できます。

addTrigger(), addTriggers()

単一または複数のトリガーに基づいて、アプリ内メッセージをいつ表示するかを決定します。詳細については、トリガーを参照してください。 トリガーはバックエンドに保存されません。ローカルデバイスにのみ存在し、現在のユーザーに適用されます。
OneSignal.InAppMessages.addTrigger("KEY", "VALUE")

OneSignal.InAppMessages.addTriggers(mapOf("KEY_01" to "VALUE_01", "KEY_02" to "VALUE_02"))

removeTrigger(), removeTriggers(), clearTriggers()

現在のユーザーから、提供されたキーを持つ単一、複数、またはすべてのトリガーを削除します。
OneSignal.InAppMessages.removeTrigger("KEY")

OneSignal.InAppMessages.removeTriggers(setOf("KEY_01", "KEY_02"))

OneSignal.InAppMessages.clearTriggers()

paused

アプリ内メッセージがユーザーに表示されないようにします。trueに設定すると、アプリ内メッセージは表示されません。falseに設定すると、ユーザーが適格なすべてのメッセージが適切なタイミングで表示されます。
OneSignal.InAppMessages.paused = true

addLifecycleListener()

アプリ内メッセージの表示と却下に応答または追跡します。
val lifecycleListener = object : IInAppMessageLifecycleListener {
  override fun onWillDisplay(event: IInAppMessageWillDisplayEvent) {
    print(event.message.messageId)
  }

  override fun onDidDisplay(event: IInAppMessageDidDisplayEvent) {
    print(event.message.messageId)
  }

  override fun onWillDismiss(event: IInAppMessageWillDismissEvent) {
    print(event.message.messageId)
  }

  override fun onDidDismiss(event: IInAppMessageDidDismissEvent) {
    print(event.message.messageId)
  }
}
OneSignal.InAppMessages.addLifecycleListener(lifecycleListener)
OneSignal.InAppMessages.removeLifecycleListener(lifecycleListener)

addClickListener() アプリ内

アプリ内メッセージのクリックイベントに応答します。イベントには、次のクリックアクションメタデータが含まれています:
  • actionId:要素に設定したカスタム識別子。
  • urlTarget:メッセージの起動URLがどのように表示されるかを指定する列挙型。
  • url:アクションの起動URL(ある場合)。
  • closingMessage:アクションがメッセージのクローズにつながったかどうかを示すブール値。
val clickListener = object : IInAppMessageClickListener {
  override fun onClick(event: IInAppMessageClickEvent) {
    print(event.result.actionId)
  }
}
OneSignal.InAppMessages.addClickListener(clickListener)

Live Activity

アプリケーションは、ユーザーがLive Activitiesにオプトインできるようにする必要があります。たとえば、アプリはボタンを使用するかIAMを表示することで、ユーザーにLive Activityを開始するオプションを提供します。通知権限または位置情報権限とは異なり、明示的なプロンプトなしで、任意の方法でLive Activityを開始および更新できます。Live ActivitiesはiOSプロビジョナル認証UIで表示されます。Live Activitiesは、アプリケーションがフォアグラウンドにあるときに開始する必要があります。Live Activitiesの詳細については、Appleの開発者ガイドラインを読むことをお勧めします。

setup()

OneSignalがアプリケーションに代わってLiveActivityのライフサイクルを管理できるようにします。これには、pushToStartトークンの更新とpushToUpdateトークンの更新の両方をリッスンすることが含まれます。
//... your app's code
OneSignal.LiveActivities.setup(MyWidgetAttributes.self);

setupDefault()

クロスプラットフォームSDKがLiveActivityのライフサイクルを管理できるようにします。カスタマーアプリが独自のActivityAttributesを定義および管理する必要がなくなります。詳細については、クロスプラットフォームセットアップを参照してください。
using OneSignalSDK;

//Push To Start
OneSignal.LiveActivities.SetupDefault();

//Launching the Live Activity from within the app (not needed for push to start)
string activityId = "my_activity_id";

OneSignal.LiveActivities.StartDefault(
  activityId,
  new Dictionary<string, object>() {
      { "title", "Welcome!" }
  },
  new Dictionary<string, object>() {
      { "message", new Dictionary<string, object>() {
          { "en", "Hello World!"}
      }},
  });

enter()

Live Activityに入ると、activityIdがサーバー上のLive Activity 一時プッシュトークンに関連付けられます。Update Live Activities REST APIを使用して1つまたは複数のLive Activitiesを同時に更新する場合に、この識別子を指定します。
// ... your app's code
let activity = try Activity<MyWidgetAttributes>.request(
  attributes: attributes,
  contentState: contentState,
  pushType: .token)
Task {
  for await data in activity.pushTokenUpdates {
      let token = data.map {String(format: "%02x", $0)}.joined()
      // ... required code for entering a live activity
      // Activity ID cannot contain "/" characters
      OneSignal.LiveActivities.enter("ACTIVITY_ID", withToken: token)
  }
}

exit()

Live Activityを終了すると、サーバー上のアクティビティ識別子とLive Activityプッシュトークン間の関連付けが削除されます。
OneSignal.LiveActivities.exit("ACTIVITY_ID")

setPushToStartToken()

Live Activitiesをプッシュして開始するためのオプションの「低レベル」アプローチ。ActivityAttribute構造を変更せずに、LiveActivityの開始および更新トークンをきめ細かく制御できます。詳細はこちらで入手可能
if #available(iOS 17.2, *) {
  // Setup an async task to monitor and send pushToStartToken updates to OneSignalSDK.
  Task {
      for try await data in Activity<MyWidgetAttributes>.pushToStartTokenUpdates {
          let token = data.map {String(format: "%02x", $0)}.joined()
          OneSignal.LiveActivities.setPushToStartToken(MyWidgetAttributes.self, withToken: token)
      }
  }
  // Setup an async task to monitor for an activity to be started, for each started activity we
  // can then set up an async task to monitor and send updateToken updates to OneSignalSDK.
  Task {
      for await activity in Activity<MyWidgetAttributes>.activityUpdates {
        Task {
            for await pushToken in activity.pushTokenUpdates {
                let token = pushToken.map {String(format: "%02x", $0)}.joined()
                OneSignal.LiveActivities.enter("my-activity-id", withToken: token)
            }
        }
      }
  }
}

removePushToStartToken()

そのアクティビティタイプが現在のサブスクリプションに対して登録されなくなった場合に、アクティビティタイプごとに呼び出されます
OneSignal.LiveActivities.removePushToStartToken(MyWidgetAttributes.self)

アウトカム

ユーザーが実行したアクションを追跡し、それらをメッセージに帰属させます。詳細については、アウトカムを参照してください。

addOutcome()

提供された名前でアウトカムを追加します。現在のセッションに対してキャプチャされます。
OneSignal.Session.addOutcome("OUTCOME_NAME")

addUniqueOutcome()

提供された名前で一意のアウトカムを追加します。現在のセッションに対してキャプチャされます。
OneSignal.Session.addUniqueOutcome("OUTCOME_NAME")

addOutcomeWithValue()

提供された名前と値でアウトカムを追加します。現在のセッションに対してキャプチャされます。
OneSignal.Session.addOutcomeWithValue("OUTCOME_NAME", 3.14)