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-Assisted Setupを使用してプラグインをインストールできます。AIツールにCapgoスキルを追加するには、以下のコマンドを使用してください。
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.Manual Setupを使用する場合は、以下のコマンドを実行してプラットフォーム固有の指示に従ってください。
-
パッケージをインストール
ターミナル画面 bun add @capgo/capacitor-watch -
ネイティブプロジェクトと同期
ターミナル画面 bunx cap sync -
プラグインの設定
基本的な使用例:
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);});Watchにメッセージを送信:
// Check if watch is reachable firstconst info = await CapgoWatch.getInfo();if (info.isReachable) {await CapgoWatch.sendMessage({data: { action: 'refresh', timestamp: Date.now() }});}必要な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 }});}); -
Sync application state
// 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);});
Watch Appの実装
Watch Appの実装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 object with:
isSupported: boolean - WatchConnectivity が利用可能かどうかisPaired: boolean - Pairing statusisWatchAppInstalled: boolean - Watch app installation statusisReachable: boolean - Watch connection statusactivationState: number - Session state (0/1/2)
getPluginVersion()
バージョン取得ネイティブ プラグインのバージョンを取得します。
イベント
イベント| 説明 | ウォッチから単純なメッセージ |
|---|---|
messageReceived | メッセージに返信を求める (コールバック ID を含む) |
messageReceivedWithReply | getPluginVersion() - Native plugin version |
applicationContextReceived | watchプラグインの設定 |
userInfoReceived | 時計からユーザー情報の転送 |
reachabilityChanged | Watch接続状況が変更されました。 |
activationStateChanged | セッションの有効化状態が変更されました。 |
コミュニケーションパターン
コミュニケーションパターンリアルタイムメッセージング("sendMessage)
即時メッセージング(sendMessage)- watch がアクセス可能である必要があります。
- リアルタイムのやり取りに適したもの
- 監視が利用できない場合に即座に失敗します。
アプリケーション コンテキスト (updateApplicationContext)
アプリケーション コンテキスト (updateApplicationContext)- 最新値のみ - 前の値は上書きされます
- 現在のアプリの状態を同期するのに最適
- ウォッチが利用可能になったときに送信されます
ユーザー情報の転送 (transferUserInfo)transferUserInfo)
順番にキューイングされ、送信されます- 重要なデータを送信するのに最適
- ウォッチが一時的に利用できない場合でも機能します
- プラットフォームに関する注意
現在のアプリの状態を同期するのに最適
iOS- iOS 15.0 以降をサポート
- WatchConnectivityフレームワークを使用
- プラグインの読み込み時にセッションが自動的に有効になります
- バックグラウンド配信をサポートし、ユーザー情報も
Android
Android- Apple WatchはiOSのみでサポートされていないため、サポートされていません
- すべてのメソッドは適切なエラーを返します
getInfo()returnsisSupported: false
Web
Web- サポートされていません
- すべてのメソッドは利用できないエラーで拒否されます
getInfo()返しますisSupported: false
一般的な使用例
「一般的な使用例」のセクション- データ同期: 時計とスマートフォンのデータを同期する
- リモートコントロール: 時計からスマートフォンの機能を制御する
- 通知: 時計にカスタム通知を送信する
- 健康データ: __CAPGO_KEEP_0__と健康指標を共有する
- メディアコントロール: 腕時計から音楽再生を制御する
- スマートホーム: 腕時計からデバイスを制御する
トラブルシューティング
: サポート / プレミアムサポートページまたはサポートセクションのヘッダートラブルシューティング
- : 腕時計が到達不能です
- 腕時計がBluetoothの範囲内にあることを確認する
- 両方のアプリが実行されていることを確認する
両方の側でWCSessionが有効になっていることを確認する
- リスナーが登録されていることを確認してください
- WatchアプリがWCSessionDelegateを実装していることを確認してください
- 使用
transferUserInfo確実な配信のために
セッションが有効化されていない:
- XcodeでWatchConnectivity機能が追加されていることを確認してください
- WatchアプリがコンパニオンのバンドルIDを持っていることを確認してください
- 両方のアプリが互換性のあるOSバージョンをターゲットにしていることを確認してください
Getting Startedから続けてください
「Getting Startedから続けてください」のセクションあなたが使用している Getting Started native プラグインの作業を計画するには、接続する Using @capgo/capacitor-watch native 能力のための Using @capgo/capacitor-watch Capgo プラグイン ディレクトリ Capgo プラグイン ディレクトリの製品フロー Capacitor プラグイン by Capgo Capacitor プラグイン by Capgo の実装詳細 プラグインの追加または更新 プラグインの追加または更新の実装詳細 Ionic Enterprise プラグインの代替 Ionic Enterprise プラグインの代替の製品フロー