Getting Started
このプラグインのインストール手順とフルマークダウンガイドを含むセットアップコマンドをコピーしてください。
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-watch`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/watch/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
インストール
「インストール」のセクションCapgoを使用して、AIツールにスキルを追加できます。以下のコマンドを実行してください:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins次に、以下のプロンプトを使用してください:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-watch` plugin in my project.手動セットアップを使用する場合は、以下のコマンドを実行してプラグインをインストールし、以下のプラットフォーム固有の説明を参照してください:
-
パッケージをインストール
ターミナル画面 bun add @capgo/capacitor-watch -
ネイティブプロジェクトと同期
ターミナル画面 bunx cap sync -
__CAPGO_KEEP_0__を設定
基本的な使用例:
import { CapgoWatch } from '@capgo/capacitor-watch';// Check watch connectivity statusconst info = await CapgoWatch.getInfo();console.log('Watch paired:', info.isPaired);console.log('Watch reachable:', info.isReachable);// Listen for messages from watchawait CapgoWatch.addListener('messageReceived', (event) => {console.log('Message from watch:', event.message);});__CAPGO_KEEP_2__にメッセージを送信:
// Check if watch is reachable firstconst info = await CapgoWatch.getInfo();if (info.isReachable) {await CapgoWatch.sendMessage({data: { action: 'refresh', timestamp: Date.now() }});}__CAPGO_KEEP_0__のiOS設定:
- XcodeでiOSアプリにWatchConnectivity機能を追加する
- XcodeプロジェクトにwatchOSアプリターゲットを作成する
- watchOSアプリでWatchConnectivityを実装する(下記のWatch App Implementationを参照)
プラグインが読み込まれたときにWCSessionを自動的に有効化する
Apple WatchはiOSのみでサポートされています。Androidの場合、すべてのメソッドは「Apple WatchはiOSのみでサポートされています」というエラーで拒否されます。
getInfo()メソッドはisSupported: false. -
リプライが必要なメッセージをハンドル
// Listen for messages that need a responseawait CapgoWatch.addListener('messageReceivedWithReply', async (event) => {console.log('Request from watch:', event.message);// Process the requestconst result = await processWatchRequest(event.message);// Send reply back to watchawait CapgoWatch.replyToMessage({callbackId: event.callbackId,data: { result }});}); -
アプリケーション状態を同期
// Update application context (latest value only)await CapgoWatch.updateApplicationContext({context: {theme: 'dark',userId: '123',lastSync: Date.now()}});// Listen for context updates from watchawait CapgoWatch.addListener('applicationContextReceived', (event) => {console.log('Context from watch:', event.context);}); -
ユーザー情報を信頼性高く転送
// Queue data for reliable delivery (even when watch is offline)await CapgoWatch.transferUserInfo({userInfo: {recordId: '456',action: 'created',data: { name: 'Item 1' }}});// Listen for user info transfersawait CapgoWatch.addListener('userInfoReceived', (event) => {console.log('User info from watch:', event.userInfo);}); -
接続性を監視
// Track reachability changesawait CapgoWatch.addListener('reachabilityChanged', (event) => {console.log('Watch reachable:', event.isReachable);if (event.isReachable) {// Watch is now available for interactive messaging}});// Track session activation stateawait CapgoWatch.addListener('activationStateChanged', (event) => {// 0 = notActivated, 1 = inactive, 2 = activatedconsole.log('Session state:', event.state);});
ウォッチアプリの実装
セクション「ウォッチアプリの実装」watchOSアプリでは、WatchConnectivityを実装する必要があります。ここでは、SwiftUIの例を示します。
import SwiftUIimport WatchConnectivity
@mainstruct MyWatchApp: App { init() { WatchViewModel.shared.activate() }
var body: some Scene { WindowGroup { ContentView() } }}
class WatchViewModel: NSObject, ObservableObject, WCSessionDelegate { static let shared = WatchViewModel()
@Published var lastMessage: [String: Any] = [:]
func activate() { guard WCSession.isSupported() else { return } WCSession.default.delegate = self WCSession.default.activate() }
// Send message to iPhone func sendToPhone(_ data: [String: Any]) { guard WCSession.default.isReachable else { print("iPhone not reachable") return } WCSession.default.sendMessage(data, replyHandler: nil) }
// Send message with reply func sendToPhoneWithReply(_ data: [String: Any], completion: @escaping ([String: Any]) -> Void) { guard WCSession.default.isReachable else { return } WCSession.default.sendMessage(data, replyHandler: completion) }
// Receive message from iPhone func session(_ session: WCSession, didReceiveMessage message: [String: Any]) { DispatchQueue.main.async { self.lastMessage = message } }
// Receive application context func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String: Any]) { DispatchQueue.main.async { self.lastMessage = applicationContext } }
// Required delegate methods func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) { print("Watch session activated: \(activationState.rawValue)") }}API リファレンス
API リファレンスメソッド
メソッドsendMessage(options: SendMessageOptions)
sendMessage(options: SendMessageOptions) "時計にインタラクティブなメッセージを送信します。時計が接続可能である必要があります。
パラメーター:
data: Object - 時計に送信するデータ
updateApplicationContext(options: UpdateContextOptions)
updateApplicationContext(options: UpdateContextOptions) "アプリケーション コンテキストを更新します。最新の値のみが保持されます。
パラメータ:
context: Object - 同期するコンテキストデータ
transferUserInfo(options: TransferUserInfoOptions)
「transferUserInfo(options: TransferUserInfoOptions)」というセクション信頼性の高い配信用にユーザー情報をキューに追加。
パラメータ:
userInfo: Object - 転送するユーザー情報
replyToMessage(options: ReplyMessageOptions)
「replyToMessage(options: ReplyMessageOptions)」というセクションメッセージが返信を要求した場合に返信します。
パラメータ:
callbackId: string - messageReceivedWithReply イベントから取得したコールバックIDdata: Object - 返信データ
getInfo()
「getInfo()」というセクション時計接続状態を取得します。
戻り値: WatchInfo オブジェクトに含まれる:
isSupported: boolean - 時計接続機能が利用可能かisPaired: boolean - 時計が pair されているかisWatchAppInstalled: boolean - 時計アプリがインストールされているかisReachable: boolean - 時計に接続できるかactivationState: number - セッション状態 (0/1/2)
getPluginVersion()
セクション “getPluginVersion()”ネイティブ プラグインのバージョンを取得します。
イベント
セクション “イベント”| イベント | 説明 |
|---|---|
messageReceived | ウォッチから送信されたシンプルなメッセージ |
messageReceivedWithReply | 返信を待つメッセージ (callbackId を含む) |
applicationContextReceived | ウォッチから送信されたコンテキストの更新 |
userInfoReceived | ウォッチから送信されたユーザー情報 |
reachabilityChanged | ウォッチとの接続状態が変更された |
activationStateChanged | セッションの有効化状態が変更された |
コミュニケーション パターン
コミュニケーション パターン即時メッセージング (sendMessage)sendMessage)
即時メッセージング (sendMessage)- __CAPGO_KEEP_0__を監視して到達可能である必要があります
- __CAPGO_KEEP_0__は、リアルタイムで重要なコミュニケーションに最適です
- __CAPGO_KEEP_0__が利用できない場合に即座に失敗します
アプリケーション コンテキスト (updateApplicationContext)
セクション「アプリケーション コンテキスト (updateApplicationContext)」- 最新値のみ - 前の値は上書きされます
- __CAPGO_KEEP_0__は、現在のアプリの状態を同期するために最適です
- __CAPGO_KEEP_0__が利用可能になったときに送信されます
ユーザー情報の転送 (transferUserInfo)
セクション「ユーザー情報の転送 (transferUserInfo)」- __CAPGO_KEEP_0__は、順序に従ってキューイングされ、送信されます
- __CAPGO_KEEP_0__は、重要なデータを送信するために最適です
- __CAPGO_KEEP_0__は時計が一時的にアクセスできなくても動作します
__CAPGO_KEEP_1__
__CAPGO_KEEP_2____CAPGO_KEEP_3__
__CAPGO_KEEP_4__- __CAPGO_KEEP_5__
- __CAPGO_KEEP_6__フレームワークを使用
- __CAPGO_KEEP_7__プラグインを読み込むと自動的にセッションが有効になります
- __CAPGO_KEEP_8__はコンテキストとユーザー情報のバックグラウンド配信をサポートしています
__CAPGO_KEEP_9__
__CAPGO_KEEP_10__- __CAPGO_KEEP_11__はサポートされていません (Apple WatchはiOSのみです)
- すべてのメソッドは適切なエラーで拒否される
getInfo()__CAPGO_KEEP_0__isSupported: false
- サポートされていません
- すべてのメソッドは利用できないエラーで拒否される
getInfo()__CAPGO_KEEP_1__isSupported: false
- データ同期__CAPGO_KEEP_2__:電話とパソコンのデータを同期しておけます
- __CAPGO_KEEP_3__:リモートでコントロールできます: __CAPGO_KEEP_0__
- 通知: __CAPGO_KEEP_1__
- : __CAPGO_KEEP_2__健康データ
- : __CAPGO_KEEP_3__メディアコントロール
- : __CAPGO_KEEP_4__スマートホーム
: __CAPGO_KEEP_5__
トラブルシューティング: __CAPGO_KEEP_6__ (トラブルシューティングのセクションです。
- __CAPGO_KEEP_0__はBluetoothの範囲内にいることを確認してください
- __CAPGO_KEEP_1__が両方実行されていることを確認してください
- 両方のアプリでWCSessionが有効になっていることを確認してください
メッセージを受け取らない場合:
- __CAPGO_KEEP_2__がリスナーを登録する前に送信することを確認してください
- ウォッチアプリがWCSessionDelegateを実装していることを確認してください
- __CAPGO_KEEP_3__
transferUserInfo送信するには確実に配信されるようにする
Sessionが有効にならない場合:
- XcodeでWatchConnectivity機能が追加されていることを確認してください
- ウォッチアプリがコンパニオンのbundle IDを持っていることを確認してください
- 両方のアプリが互換性のあるOSバージョンをターゲットにしていることを確認してください
Getting Startedから続けてください
Getting Startedから続けてくださいCapgoを使用している場合 Getting Started Capgoを使用してnative pluginの作業計画を行う場合、Capgoをnative capabilityと接続します。 Using @capgo/capacitor-watch for the native capability in Using @capgo/capacitor-watch, Capgo Plugin Directory for the product workflow in Capgo Plugin Directory, Capacitor Plugins by Capgo for the implementation detail in Capacitor Plugins by Capgo, Capgoプラグインの追加または更新 実装詳細の追加または更新の際の詳細については、 Ionic Enterprise プラグインの代替 Ionic Enterprise プラグインの製品ワークフローについては、