AndroidにはAndroid Live通知と呼ばれる同様の機能があります。
要件
- ネイティブiOS(Swift/Objective-C)を使用している場合は、iOS SDKセットアップに従ってください。
- ラッパーSDK(React Native、Flutter、Unityなど)を使用している場合は、Mobile SDKセットアップに従い、次にクロスプラットフォームLive Activity SDKセットアップに従ってください。
- push-to-startサポートにはOneSignal iOS SDKバージョン5.2.0+が必要です(リリースノートを参照)。
- iOS 16.1+およびiPadOS 17+
- .p8 APNsキーを使用します。AppleはLive Activitiesでp12証明書をサポートしていません。
- Xcode 14以降
セットアップ
これらの手順では、Live Activitiesを迅速にセットアップする方法を説明します。詳細とデザインのカスタマイズについては、AppleのLive Activities開発者ドキュメントを参照してください。1. Widget Extensionを追加する
Xcodeで、ファイル > 新規 > ターゲット… > Widget Extensionに移動します。
XcodeでアプリのWidget Extensionターゲットを新規追加します。
OneSignalWidget)、Include Live Activityが選択されていることを確認します。次に完了をクリックします。

Live ActivityのWidget Extensionオプション。

Live ActivityのWidget Extensionオプション。
2. Info.plistを更新する
メインターゲットのInfo.plistに、キーSupports Live ActivitiesをBooleanとして追加し、YESに設定します。

InfoにSupports Live Activitiesキーを追加し、その値をBoolean YESに設定します
info.plist
Live Activitiesを更新する場合、「優先度」を設定するオプションがあり、Appleはこれを使用して更新の緊急性を判断します。Appleには内部しきい値があり、高優先度フラグを頻繁に使用するリクエストをスロットルします。Live Activitiesのユースケースがより頻繁な高優先度更新に依存している場合、AppleのDeveloper Docsで指示されているように、Info.plistにキー
NSSupportsLiveActivitiesFrequentUpdatesをBoolean型でYESとして追加できます。Live Activityがプッシュ予算を超えると、ユーザーにダイアログが表示され、Live Activityを続行することを許可すると、シームレスなユーザーエクスペリエンスのために予算が自動的に増加します。3. SDKを追加する
- パッケージマネージャー
- Cocoapods
Widget Extensionターゲットで、一般 > フレームワーク、ライブラリ、および埋め込みコンテンツの下に
OneSignalFrameworkを追加します:
Widget ExtensionターゲットにOneSignalFrameworkを追加します
4. ウィジェット属性とUIを定義する
your-nameLiveActivity.swiftファイル(例:OneSignalWidgetLiveActivity.swift)を開いて、構造体のプロパティを定義し、ウィジェットUIを変更します。
your-nameAttributesは、Live Activityの静的コンテンツを説明します。ContentStateは、Live Activityの動的コンテンツを説明します。
OneSignalWidgetLiveActivity.swiftファイルにコピーペーストします。
your-nameLiveActivity.swift
5. メインターゲットメンバーシップを許可する
your-nameLiveActivity.swiftファイルのターゲットメンバーシップリストにメインアプリターゲットを追加します。
Xcodeで、画面の右側にあるInspectorパネルを開きます。ターゲットメンバーシップ内で、**+**ボタンをクリックし、ContentViewとOneSignal初期化コードを含むメインアプリターゲットを選択します。

メインターゲットメンバーシップを許可します
6. AppDelegateにセットアップメソッドを追加する
OneSignal SDK初期化の後、AppDelegateでOneSignal.LiveActivities.setupを呼び出します。
OneSignalWidgetAttributesをLive Activity属性構造体の名前に置き換えます。
AppDelegate
アプリで次のシーケンスを直接使用する場合、OneSignal Live Activityの動作に干渉する可能性があります:
- activityStateUpdates
- pushTokenUpdates
- pushToStartTokenUpdates
- activityUpdates
Live Activityを開始する
デバイスでLive Activityを開始するには2つのオプションがあります:- Push-to-start
- Trigger-in-app
Push To Start APIリクエストを送信します。すべての名前とIDがウィジェットの構成と正確に一致することを確認してください(パラメーターは大文字小文字を区別します)。何かが欠落しているか、誤って追加された場合、ウィジェットの起動時に問題が発生する可能性があります。上記の例で機能するリクエストの例を次に示します。置き換え:
-
YOUR_APP_IDをOneSignal App IDに置き換えます。 -
YOUR_APP_API_KEYをOneSignal APIキーに置き換えます。 -
OneSignalWidgetAttributesをWidget Attributes構造体の名前に置き換えます。curl

ロック画面のLive Activity
push-to-startでLive Activityを正常に開始しました!ユーザーは更新を受け取り続けるために「許可」を選択する必要があります。
Live Activityを更新する
Update Live Activity APIを使用してアクティブなウィジェットを更新します。 アクティビティを開始するときに使用したactivity_idと一致させます。
このサンプルリクエストは、定義したactivity_idがpush-to-startというタイトルであるため、push-to-startウィジェットを更新します。
click-to-startウィジェットを更新するには、リクエストパスをpush-to-startの代わりにclick-to-startを使用するように更新します。
curl

Live Activity更新
Live Activityを正常に更新しました!Live Activityの更新の詳細については、Update Live Activity APIをご覧ください。
Live Activityを終了する
同じUpdate Live Activity APIを使用して、"event": "end"を設定することでLive Activityを終了できます。
curl
- SDK の
exit()メソッドを使用する。 - ユーザーが手動でLive Activityをスワイプして削除する。
- ユーザーがiOS設定でLive Activitiesの権限を取り消す。

Live Activity終了
Live Activityを正常に終了し、例を完了しました!
ベストプラクティスと推奨事項
デザインに関する考慮事項
- AppleのLive Activities Human Interface Guidelinesに従ってください。
- 重要な情報を優先して、一目で理解しやすくします。
- Dynamic Islandに注意を引く要素をアプリに追加しないでください。
- マージンを使用し、要素間のスペースを維持します。
- 背景に太字の色を使用します。ライトモードとダークモードの両方をデザインします。
機能性
- Appleは、各Live Activityプレゼンテーションをサポートする必要があります。
- ディープリンクをテストします。
- AppleのLive ActivitiesでライブデータをDisplayingに関するガイドをレビューします。
- Live Activityに機密情報を表示しないでください。
フォールバックメッセージの設定
- Live Activityが開始された後、ユーザーが更新を受信できない特定のケースでは、アプリを開くことで更新を継続する必要があります
- これに対応するために、stale dateを将来の日付と時刻に設定します。これは、ユーザーに最初の更新を送信した後のタイミングで、更新を受信していないユーザーにフォールバックメッセージが表示されます。
- ウィジェットUIでこの「stale」状態をリッスンして、フォールバックメッセージを表示できます:
swift
APIが400を返し、サブスクライバー制限を超えているというエラーメッセージが表示されました。どうすればよいですか?
プッシュサブスクライバー数がプランのプッシュサブスクライバー数を超えている場合は、アカウントを次のプランにアップグレードするか、support@onesignal.comにお問い合わせください。最新のプラン詳細については、こちらをご覧ください。
プッシュとLive Activitiesの両方を送信しないようにするにはどうすればよいですか?
アプリケーションは既に一連のプッシュ通知を送信している可能性があり、設計したLive Activityがこれらのプッシュ通知の必要性を置き換えます。たとえば、プッシュ経由でスコア更新を送信している場合、これをLive Activityで置き換えることができます。 ユーザーがメッセージを受け取りすぎないようにするために、ユーザーがLive Activityにオプトインするときにデータタグを追加することをお勧めします。このデータタグを追加することで、同じまたは類似のコンテンツを含む可能性のあるプッシュメッセージからこのデータタグを持つユーザーを除外できます。詳細については、データタグとセグメントをご覧ください。トラブルシューティング
受信者なし
Live Activityを開始または更新しようとするときにユーザーが見つかるようにするには、アクティビティタイプ、ウィジェット、およびcURLリクエストのすべてに一致する値があることを確認する必要があります。-
リクエストのパスパラメーターをチェックして、正しくフォーマットされたリクエストをサーバーに送信していることを確認します。App IDは
OneSignal.Initializeメソッドで使用したApp IDと一致する必要があり、アクティビティタイプはLive Activityファイルで定義したタイプと一致する必要があります。 - Push To Start APIリクエストの本文には、次のパラメーターが必要です:
event:"start"event_updates: アクティビティタイプの下の構造体で定義した動的データで、ウィジェットで使用されます。リクエスト、タイプ、ウィジェット間で大文字小文字と変数がすべて一致することを確認してください。event_attributes: 静的データはEvent Updatesと同じロジックに従い、使用中のすべての変数を含める必要があり、Live Activityのすべての部分とリクエスト全体で一致する必要がありますactivity_id: これによりウィジェットにIDが割り当てられ、ユーザーのデバイスで起動された後にアクティビティを更新するために使用されます。name: Live Activity名。contents: プッシュ送信に必要なメッセージコンテンツ。headings: プッシュ送信に必要なメッセージ見出し。included_segmentsのようなターゲティングパラメーター。利用可能なオプション。
アクティビティが送信されたが、受信されない
- リクエストが正しくフォーマットされていることを確認します。ウィジェットで使用されているフィールドが省略されている場合、アクティビティが起動または更新されない可能性があります。
-
APIリクエストで、設定している
priorityレベルを確認します。これを10(最高優先度)に設定している場合は、5に下げて再度テストしてください。Appleは独自の内部レート制限に従って、頻繁に送信されるリクエストをスロットルします。
NSSupportsLiveActivitiesFrequentUpdatesキーを追加します。Live Activityがプッシュ予算を超えると、ユーザーにダイアログが表示され、ユーザーがLive Activityの継続を許可すると、シームレスなユーザーエクスペリエンスのために予算が自動的に増加します。
サポートが必要ですか?サポートチームとチャットするか、
support@onesignal.comにメールしてください以下を含めてください:- 発生している問題の詳細と再現手順(利用可能な場合)
- OneSignal App ID
- 該当する場合は、External IDまたはSubscription ID
- 該当する場合は、OneSignalダッシュボードでテストしたメッセージのURL
- 関連するログまたはエラーメッセージ