概要
iOS Live Activities は、アプリの最新データを、iPhone のロック画面および Dynamic Island にリアルタイムでインタラクティブな更新として表示します。トランザクショナル Live Activities は、注文追跡、配車サービスの更新、パーソナライズされた取引状況など、ユーザー固有の個別イベント向けに特別に設計されています。情報Live Activities とプッシュ通知では、ユーザー権限のモデルが異なります。デフォルトでは、アプリの Live Activities は有効になっています。ユーザーはデバイスの設定で、アプリごとに個別に権限を管理できます。
前提条件開始する前に、プロジェクトとアカウントが正しく構成されていることを確認してください。
- Apple Developer アカウントの構成:
- Apple Developer アカウントで、Certificates、IDs & Profiles > Identifiers に移動し、アプリの識別子を選択します。
- Capabilities タブで、Push Notifications チェックボックスが選択されていることを確認します。これは、Apple Push Notification service (APNs) がアクティビティの更新を配信するために必須です。
- APNs 認証キー: MoEngage がお客様に代わってプッシュ通知を送信することを許可するには、APNs 認証キーを構成する必要があります。.p8 ファイルを MoEngage ダッシュボードにアップロードする詳細な手順については、APNs 認証キーに関するドキュメントを参照してください。
- SDK バージョン: トランザクショナル Live Activities をサポートするには、MoEngage iOS SDK 10.09.0 以上が必要です。
- MoEngage Live Activity モジュール: トランザクション更新を処理するには、MoEngageLiveActivity モジュールが必要です。
- Xcode と iOS のバージョン:
- Xcode: Xcode 14.1 以降を使用してください。
- iOS ターゲット: Live Activity のターゲットは iOS 18 以降である必要があります。
トランザクショナル Live Activity の実装
このセクションでは、トランザクショナル Live Activities のために Xcode プロジェクト内で必要なクライアント側の設定について説明します。ステップ 1: Widget Extension を追加する
- Xcode で File > New > Target に移動します。
- Widget Extension を選択し、Next をクリックします。

- ウィジェットのプロダクト名を入力します。
- Include Live Activities チェックボックスを選択します。

- Finish をクリックします。
ステップ 2: アプリの Info.plist を構成する
メインアプリの Info.plist に Live Activities のサポートを追加します。ステップ 3: MoEngageLiveActivity の統合
情報MoEngageLiveActivity フレームワークを統合するには、MoEngage iOS SDK バージョン 10.09.0 以上を使用していることを確認してください。
Swift Package Manager を使用したインストール(推奨)
MoEngageLiveActivity フレームワークは SDK バージョン 10.09.0 から SPM でサポートされています。統合するには、GitHub URL https://github.com/moengage/apple-sdk.git を使用し、ブランチを master または必要なバージョンに設定します。CocoaPod を使用したインストール
情報CocoaPods は非推奨になりつつあります。MoEngage では、すべての新規統合に Swift Package Manager を使用することを推奨しています。CocoaPods の詳細については、CocoaPods 統合ガイドを参照してください。
ステップ 4: Live Activity の属性を定義する
ウィジェット拡張機能用に生成された Swift ファイルで、トランザクショナル Live Activity のデータ構造(例: フードデリバリーの注文)を定義します。- ActivityAttributes を構成する: ActivityAttributes に準拠する struct を作成します。この struct には以下が含まれます。
- 静的データ: 一度設定されると変更されない属性(例: 注文番号)。
- ContentState: リアルタイムで更新される動的データ用のネストされた struct(例: 配達状況)。
- ActivityConfiguration を作成する際は、トランザクションをサポートするために、ActivityAttributes の型として FoodOrderAttributes の代わりに MoEngageTransactionActivityAttributes<FoodOrderAttributes> を使用します。
- moengageWidgetClickURL API でディープリンクとウィジェット ID を構成して、ウィジェットのクリックをトラッキングします。
- Target Membership を確認する: ActivityAttributes struct がメインアプリのターゲットからアクセスできるようにします。
- ActivityAttributes を定義した Swift ファイルを選択します。
- File Inspector を開きます(Option + Command + 1)。
- Target Membership セクションで、メインアプリのターゲットのチェックボックスをオンにします。
ステップ 5: Live Activities を監視する
monitorLiveActivities メソッドを呼び出して、SDK がリアルタイム更新を監視する ActivityAttributes の型を登録します。This method must be invoked within your app's didFinishLaunchingWithOptions method.(このメソッドはアプリの didFinishLaunchingWithOptions メソッド内で呼び出す必要があります。)この登録は、トランザクショナルアクティビティの更新に必要なショートトークンを SDK が正しくトラッキングおよび管理するために必須です。
Live Activity のライフサイクル管理
アプリの構成が完了したら、ローカルのアプリコードと MoEngage API を組み合わせて、トランザクショナル Live Activities を開始、更新、終了できます。ステップ 6: トランザクショナル Live Activity を開始する
トランザクショナル Live Activity は通常、エンドユーザーがトランザクションを開始したとき(例: フードの注文)にアプリからローカルで開始されますが、Inform API(サーバー側)を介してリモートで開始することもできます。Push-to-Start(リモート)
Inform API を使用してユーザーの Live Activity を開始します。詳細については、こちらを参照してください。Click-to-Start(ローカル)
ユーザーのアクションをトリガーとして、アプリ内からアクティビティを開始します。 アプリケーションの ActivityAttributes データと、必須の MoEngage メタデータ(サーバーから取得)を組み合わせて、createAttributes(withCampaign:completion:) または createAttributes(withCampaign:) async SDK API から Live Activity のデータを取得します。Live Activity を開始するには、pushType を.token に設定して Apple の Activity.request() メソッドを使用します。これにより、ローカルで開始されたアクティビティがキャンペーンにリンクされます。
情報
pushType: .token, を使用すると、Live Activity は固有のプッシュトークンを介して、このアクティビティインスタンスを対象としたトランザクション更新を受信するように構成されます。ステップ 7: Live Activity を更新する
アクティビティのプッシュトークンを対象としたプッシュ通知を使用して、トランザクショナルアクティビティのステータスを更新します。更新は Inform API を介してのみ実行する必要があります。詳細については、Inform API を参照してください。ステップ 8: Live Activity を終了する
アクティビティの終了は Inform API を介してのみ実行する必要があります。それ以外の場合は、構成されたdismissal_date に達すると自動的に終了します。
詳細については、Inform API を参照してください。