メインコンテンツへスキップ
@capgo/capacitor-live-activities UI & システム オープンソース

Live Activities Capacitor プラグイン

Capacitor から JSON 駆動テンプレートで iOS の Live Activities と Dynamic Island のレイアウトを管理

インストール

bun add @capgo/capacitor-live-activities bunx cap sync
npm、pnpm、または yarn
  • npm install @capgo/capacitor-live-activities
  • pnpm add @capgo/capacitor-live-activities
  • yarn add @capgo/capacitor-live-activities

ガイド

Capacitor で Live Activities を使う方法

@capgo/capacitor-live-activities の使用

iOS の Live Activities を管理するための Capacitor Live Activities プラグインインターフェース。

インストール

bun add @capgo/capacitor-live-activities
bunx cap sync

iOSのセットアップ

プラグインのインストールと同期だけでは、ネイティブの Live Activity UI は作成されません。呼び出す前に、 startActivityXcode で ActivityKit の設定を行ってください:

  1. 実行 bunx cap open ios.
  2. 他の依存関係用の Widget Extension ターゲットを選択し、以下を有効にします: Live Activityを含める.
  3. アプリと Widget Extension のデプロイターゲットを iOS 16.1 以降に設定してください。
  4. Extension がメインアプリに埋め込まれていることを確認してください。
  5. また、 ActivityConfiguration を Extension の WidgetBundleに登録し、ロック画面および Dynamic Island のすべての表示に対応させてください。
  6. 追加 NSSupportsLiveActivities メインアプリターゲットの Info.plist.
<key>NSSupportsLiveActivities</key>
<true/>

ターゲットを追加するだけでは不十分です。ネイティブアプリまたはプラグインからActivityKitのrequest、update、end APIを呼び出す必要があります。Widget Extensionには、SwiftUI code が、それらの呼び出しで使用される同じ ActivityAttributes コンテンツ状態をデコードして描画できるように含まれている必要があります。ActivityKitの共有モデルをメインアプリとWidget Extensionの両方のターゲットに含めてください。Xcodeが生成するLive Activityテンプレートは、このプラグインに渡されたJSONレイアウトを自動的に描画しません。拡張機能にも互換性のあるネイティブレイアウトレンダラーが必要です。

共有画像

画像管理メソッドを使う場合は、 App Groups CapabilityをメインアプリとWidget Extensionの両方のターゲットに追加してください。プラグインが期待する正確な識別子を使って、両方のターゲットで同じグループを有効にしてください:

group.<MAIN_APP_BUNDLE_ID>.liveactivities

Live Activity拡張機能はネットワークにアクセスできません。リモート画像はメインアプリでダウンロードし、共有App Groupに保存し、 saveImageその後、レイアウトから保存した画像を参照してください。バンドルされたアセットもWidget Extensionターゲットに属している必要があります。

ディープリンクとPushアップデート

  • 使用されるカスタムURLスキームを登録してください behavior.widgetUrl または tapUrl メインアプリターゲットの Info > URL Types の設定にスキームを追加します。
  • サーバー駆動のアップデートを行うには、 プッシュ通知 capabilityを追加し、APNsを使用したActivityKitのpush-token処理を実装してください。
  • 追加 NSSupportsLiveActivitiesFrequentUpdates アプリで頻繁にActivityKitのpushアップデートが必要な場合にのみ行ってください。

Push Notificationsのcapabilityを有効にするだけでは不十分です。サーバー駆動のアップデートには、ネイティブでのトークン処理とAPNsバックエンドが必要です。

ActivityKitでは、静的および動的なLive Activityデータの合計サイズは4 KBに制限されています。Dynamic Islandは対応しているデバイスモデルでのみ表示され、その他のデバイスではロック画面に表示されます。

このプラグインで利用可能な機能

  • areActivitiesSupported - このデバイスが Live Activities に対応しているか確認します。iOS 16.1 以上かつデバイスのサポートが必要です。
  • startActivity - 指定したレイアウトとデータで新しい Live Activity を開始します。
  • updateActivity - 既存の Live Activity を新しいデータで更新します。
  • endActivity - Live Activity を終了します。

使用例

areActivitiesSupported

このデバイスが Live Activities に対応しているか確認します。iOS 16.1 以上かつデバイスのサポートが必要です。

import { CapgoLiveActivities } from '@capgo/capacitor-live-activities';

const { supported, reason } = await CapgoLiveActivities.areActivitiesSupported();
if (supported) {
  console.log('Live Activities are supported!');
} else {
  console.log('Not supported:', reason);
}

startActivity

指定したレイアウトとデータで新しい Live Activity を開始します。

import { CapgoLiveActivities } from '@capgo/capacitor-live-activities';

const { activityId } = await CapgoLiveActivities.startActivity({
  layout: {
    type: 'container',
    direction: 'horizontal',
    children: [
      { type: 'text', content: 'Order #{{orderNumber}}', fontSize: 16, fontWeight: 'bold' },
      { type: 'text', content: '{{status}}', fontSize: 14, color: '#666666' }
    ]
  },
  dynamicIslandLayout: {
    expanded: {
      leading: { type: 'image', source: 'sfSymbol', value: 'box.truck' },
      trailing: { type: 'text', content: '{{eta}}' },
      center: { type: 'text', content: '{{status}}' },
      bottom: { type: 'progress', value: 'progress' }
    },
    compactLeading: { type: 'image', source: 'sfSymbol', value: 'box.truck' },
    compactTrailing: { type: 'text', content: '{{eta}}' },
    minimal: { type: 'image', source: 'sfSymbol', value: 'box.truck' }
  },
  data: {
    orderNumber: '12345',
    status: 'On the way',
    eta: '10 min',
    progress: 0.6
  }
});
console.log('Started activity:', activityId);

updateActivity

既存の Live Activity を新しいデータで更新します。

import { CapgoLiveActivities } from '@capgo/capacitor-live-activities';

await CapgoLiveActivities.updateActivity({
  activityId: 'abc123',
  data: {
    status: 'Arrived!',
    eta: 'Now',
    progress: 1.0
  },
  alertConfiguration: {
    title: 'Delivery Update',
    body: 'Your order has arrived!'
  }
});

endActivity

Live Activityを終了します。

import { CapgoLiveActivities } from '@capgo/capacitor-live-activities';

await CapgoLiveActivities.endActivity({
  activityId: 'abc123',
  data: { status: 'Delivered' },
  dismissalPolicy: 'after',
  dismissAfter: Date.now() + 3600000 // 1 hour from now
});

リファレンス全文

@capgo/capacitor-live-activities の使用から続ける

使用している場合 @capgo/capacitor-live-activities の使用 ネイティブメディアとインターフェースの挙動を計画するには、次と連携させてください @capgo/capacitor-live-activities @capgo/capacitor-live-activities の実装の詳細については、 スタートガイド スタートガイドの実装詳細については、 @capgo/capacitor-video-playerの使用方法 @capgo/capacitor-video-player の使い方におけるネイティブ機能については、 @capgo/capacitor-video-player @capgo/capacitor-video-player の実装の詳細、および @capgo/capacitor-native-navigation の活用 @capgo/capacitor-native-navigation. の使い方におけるネイティブ機能については

よくある質問

Live Activities プラグイン FAQ

Capacitor アプリに Live Activities プラグインをインストールするにはどうすればよいですか?

"bun add @capgo/capacitor-live-activities" (または "npm install @capgo/capacitor-live-activities") を実行し、次に "bunx cap sync" を実行して、iOS および Android プロジェクトにネイティブの code を反映させます。アプリの code で "@capgo/capacitor-live-activities" からインポートしてください。

@capgo/capacitor-live-activities は React、Vue、Angular で動作しますか?

はい。Live Activities は Capacitor パッケージであるため、Ionic、React、Vue、Angular、Svelte、およびプレーンな JavaScript を含む、Capacitor 内で動作するあらゆる Web フレームワークで使用可能です。

@capgo/capacitor-live-activities はどの Capacitor バージョンをサポートしていますか?

Capgo プラグインは Capacitor のメジャーバージョンに合わせています。使用している Capacitor のメジャーバージョンに一致するプラグインのメジャーバージョンを使ってください (例: Capacitor 8 ならプラグイン v8)。GitHub の README にある互換性テーブルに、メンテナンス中のバージョンが記載されています。

@capgo/capacitor-live-activities は無料のオープンソースですか?

はい。code のソースコードは GitHub の https://github.com/Cap-go/capacitor-live-activities/ で公開されており、パッケージは npm から無料でインストールできます。バグ報告やプルリクエストも歓迎しています。

App Store の審査なしで、Live Activities を使用している code をアップデートできますか?

プラグインのインストールやアップグレードはネイティブの code を変更するため、新しいストアビルドが必要です。その後は、プラグインを呼び出す JavaScript、HTML、CSS の変更を Capgo Live Updates で即座に配信できます。

アプリの審査を待たずに Live Activities の変更をリリース

プラグインをストア用ビルドに組み込めば、Capgo live updates で JavaScript、HTML、CSS の変更を数分でユーザーに配信できます

Capgo から始める