Skip to main content
Live Activitiesは比較的新しいiOS機能であり、ネイティブ実装が必要です。これは、React Native、Flutter、Unity、Cordovaなどのクロスプラットフォームフレームワークを使用する際に課題となる可能性があります。プロセスを簡素化するために、OneSignalのSDKには、ネイティブコードの要件を最小限に抑え、サポートされているプラットフォーム全体でLive Activityの統合を効率化する機能が含まれています。

要件

  • 最新バージョンのSDK。
  • iOS 16.1以降およびiPadOS 17以降
  • .p8 APNsキーを使用します。Appleは、Live Activitiesでp12証明書をサポートしていません。
  • Xcode 14以降

セットアップ

1. SDKをセットアップ

アプリに最新バージョンのMobile SDKがセットアップされていることを確認してください。Live Activitiesは、WebサイトまたはWeb SDKでは利用できません。
Unity
UnityベースのモバイルアプリのクロスプラットフォームSDKガイド。
React Native & Expo
React NativeおよびExpo環境のセットアップ手順。
Flutter
Dartを使用するFlutterアプリのSDKガイド。
Ionic & Ionic Capacitor
IonicおよびCapacitorハイブリッドモバイルアプリのセットアップ。
.NET MAUI
.NET MAUIアプリとの統合ガイド。
Huawei Android Native
HMSプッシュサービスを使用するHuaweiデバイスのSDKセットアップ。

2. 新しいsetupDefaultメソッドを追加

OneSignal SDKにDefaultLiveActivityAttributesタイプのLiveActivityライフサイクルを管理するように指示するには、setupDefaultメソッドを呼び出すことができます。このメソッドを使用すると、Start Live ActivityUpdate Live Activityの両方のAPIを使用して、Default Live Activityを開始/更新/終了できます。

3. Activity Widgetを作成

1

Info.plistを更新

Xcodeで、メインターゲットのInfo.plistを開き、キーSupports Live ActivitiesBooleanとして追加し、YESに設定します。

InfoにSupports Live Activitiesキーを追加し、その値をBoolean YESに設定

Live Activitiesを更新するときに、Appleが更新の緊急性を判断するために使用する「優先度」を設定するオプションがあります。Appleには、高優先度フラグを頻繁に使用するリクエストをスロットルする内部しきい値があります。Live Activitiesのユースケースがより頻繁な高優先度更新に依存している場合は、AppleのDeveloper Docsで指示されているように、キーNSSupportsLiveActivitiesFrequentUpdatesをInfo.plistにBoolean型としてYESに設定して追加できます。Live Activityがプッシュ予算を超えると、ユーザーにはダイアログが表示され、Live Activityの継続を許可すると、予算が自動的に増加してシームレスなユーザーエクスペリエンスが提供されます。
2

Widget Extensionを作成

Xcodeで、File > New > Target… > Widget Extensionに移動します。

Xcodeでアプリの新しいWidget Extensionターゲットを追加

選択してNextを押します。名前を指定してWidget Extensionを構成し(例:OneSignalWidget)、Include Live Activityが選択されていることを確認します。次に、Finishをクリックします。

Live ActivityのWidget Extensionオプション

スキームのアクティブ化を求められたら、Don’t Activateをクリックします。

Live ActivityのWidget Extensionオプション

3

Podfile に OneSignalLiveActivities サブスペックを追加する(任意)

この手順は、アプリが CocoaPods で Live Activity widget 拡張機能を使用する場合にのみ必要です。プロジェクトのTargetsリストでwidget extensionターゲットの名前を見つけます。例の名前はOneSignalWidgetExtensionです。

widget extensionターゲットの名前を見つける

Podfile を開き、OneSignalXCFramework/OneSignalLiveActivities サブスペックのみを追加します。OneSignalWidgetExtension を widget 拡張ターゲットの名前に置き換えます。OneSignalComplete に解決され位置情報モジュールを含む集約宣言 pod 'OneSignalXCFramework' は使用しないでください。
Podfile
Xcodeを閉じて、pod repo update && pod installを実行してOneSignalLiveActivities podをインストールします。

4. LiveActivity.swiftファイルをセットアップ

Xcodeで、_WidgetExtensionLiveActivity.swift_ファイルを開きます。 画面の右側にあるInspectorパネルを開きます。Target Membership内で、**+**ボタンをクリックしてRunnerターゲットを選択します。

メインターゲットメンバーシップを許可

_WidgetExtensionLiveActivity.swift_の内容を次のデフォルトのLive Activityレイアウトで更新します。このWidget内の値は、widgetに表示したいものに変更できます。setupDefaultメソッドは、これらの属性の構造体を定義します。
Swift

Live Activityをテスト

  1. アプリを起動します
  2. Start Live Activity APIリファレンスですべての可能なフィールドを確認してください。これらのフィールドの構造は、UIの設定方法によって異なる場合があります。例:
  • "event_updates":これは、Live Activityが開始された後に更新できる動的データです(コード例のcontext.state以降のすべて)。context.state.dataがあるため、このフィールドにdataオブジェクトと、コード例で追加したメッセージ辞書などの追加フィールドを追加します。使用方法については、以下のリクエスト例を参照してください。
  • "event_attributes":これは、push to startリクエストで設定される静的データで、Live Activityが削除または上書きされるまで同じ値のままです。
  1. push to startを使用する場合、コード内ではなく、リクエストで"activity_id"を設定します。異なるActivity IDを使用すると、新しいLive Activitiesが開始されます。同じActivity IDを使用すると、そのIDを現在使用しているwidgetが上書きされます。
  2. URLパスでOneSignal App IDを変更し、AuthorizationヘッダーでRest API Keyを変更していることを確認してください。デフォルトのセットアップを使用している場合、DefaultActivityAttributesタイプは変更できません。また、パスに追加されるactivityタイプは大文字と小文字が区別され、ユーザーが定義したものまたは以下の例で使用されているDefault activityと一致する必要があることに注意してください。
curl

低レベルメソッド

これらは、独自のPush To Startトークンを生成したい場合に使用するオプションのメソッドです。これは、SDKの最新リリースにも追加されています。これらのメソッドを使用するには、Xcodeとのやり取りを増やし、Swiftを使用してPush To Start用の独自のトークンを生成する必要があります。このガイドはこちらで見つけることができます。