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.
-
パッケージをインストール
ターミナル画面 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. -
__CAPGO_KEEP_0__を返信する必要があるメッセージを処理する
// 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 }});}); -
__CAPGO_KEEP_0__を同期する
// 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);}); -
__CAPGO_KEEP_0__を信頼できる方法でユーザー情報を転送する
// 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);}); -
__CAPGO_KEEP_0__を監視する
// 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);});
__CAPGO_KEEP_0__を実装する
__CAPGO_KEEP_0____CAPGO_KEEP_0__を実装する必要があるのは、Watch App です。ここでは、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 Reference
API リファレンスMethods
メソッドsendMessage(options: SendMessageOptions)
sendMessage(options: SendMessageOptions)時計にインタラクティブなメッセージを送信します。時計が接続可能な場合にのみ機能します。
パラメータ:
data: Object - 時計に送信するデータ
updateApplicationContext(options: UpdateContextOptions)
updateApplicationContext(options: UpdateContextOptions)アプリケーションコンテキストを更新します。最新の値のみが保持されます。
パラメータ:
context: Object - 同期するコンテキストデータ
transferUserInfo(options: TransferUserInfoOptions)
Section titled “ユーザー情報を転送する(transferUserInfo(options: TransferUserInfoOptions))”ユーザー情報を信頼性の高い方法で送信する。
パラメータ:
userInfo: Object - 送信するユーザー情報
replyToMessage(options: ReplyMessageOptions)
Section titled “メッセージに返信する(replyToMessage(options: ReplyMessageOptions))”メッセージに返信する。
パラメータ:
callbackId: string - messageReceivedWithReply イベントから取得したコールバックIDdata: Object - 返信データ
getInfo()
Section titled “情報を取得する(getInfo())”ウォッチ接続状態を取得する。
戻り値: WatchInfo オブジェクトのプロパティ:
isSupported: boolean - WatchConnectivity が利用可能かどうかisPaired: boolean - 時計が pair されているかどうかisWatchAppInstalled: boolean - 時計アプリがインストールされているかどうかisReachable: boolean - 時計が接続されているかどうかactivationState: number - セッション状態 (0/1/2)
getPluginVersion()
セクション “getPluginVersion()”ネイティブ プラグインのバージョンを取得します。
イベント
セクション “イベント”| イベント | 説明 |
|---|---|
messageReceived | シンプルなメッセージ |
messageReceivedWithReply | 返信を待つメッセージ (callbackIdを含む) |
applicationContextReceived | ウォッチからのコンテキスト更新 |
userInfoReceived | ウォッチからユーザー情報を転送 |
reachabilityChanged | ウォッチの接続状態が変更 |
activationStateChanged | セッションの有効化状態が変更 |
コミュニケーション パターン
コミュニケーション パターン即時メッセージング (sendMessage)
ウォッチが接続可能な場合にのみ- 即時性とタイムセンシティブ性の高いインタラクティブなコミュニケーションに適しています
- 即時メッセージング (sendMessage)
- __CAPGO_KEEP_0__はウォッチが利用できない場合に即座に失敗します
アプリケーション コンテキスト (updateApplicationContext)
アプリケーション コンテキスト (updateApplicationContext)- 最新値のみ - 前の値は上書きされます
- 現在のアプリの状態を同期するのに最適
- ウォッチが利用可能になったときに送信されます
ユーザー情報の転送 (transferUserInfo)
ユーザー情報の転送 (transferUserInfo)- 順番にキューイングされ、送信されます
- 重要なデータを送信するのに最適
- ウォッチが一時的に利用できない場合でも機能します
プラットフォームに関する注意事項
プラットフォームに関する注意iOS
iOS- iOS 15.0 以降が必要
- WatchConnectivity フレームワークを使用
- プラグインの読み込み時にセッションが自動的に有効になります
- コンテキストとユーザー情報のバックグラウンド配信をサポート
Android
Android- サポートされていません (Apple WatchはiOSのみ)
- すべてのメソッドは適切なエラーで拒否されます
getInfo()returnsisSupported: false
Web
Web- Not supported
- All methods reject with unavailable error
getInfo()returnsisSupported: false
Common Use Cases
Section titled “Common Use Cases”- Data Sync: Keep watch and phone data in sync
- Remote Control: Control phone features from watch
- Notifications: __CAPGO_KEEP_0__をカスタムで送信します。
- 健康データ: __CAPGO_KEEP_0__と健康指標を共有します。
- メディアコントロール: __CAPGO_KEEP_0__から音楽再生を制御します。
- スマートホーム: 腕時計からデバイスを制御します。
トラブルシューティング
トラブルシューティング腕時計が接続できません。
- 腕時計がBluetoothの範囲内にありますか?
- 両方のアプリが実行中ですか?
- 両方の側でWCSessionが有効になっていることを確認する
受信されていないメッセージ:
- リスナが登録されていることを確認してから送信する
- ウォッチアプリがWCSessionDelegateを実装していることを確認する
- 使用
transferUserInfo確実に配信されるように
セッションが有効にならない:
- XcodeでWatchConnectivity機能が追加されていることを確認する
- ウォッチアプリがコンパニオンのbundle IDを持っていることを確認する
- 両方のアプリが互換性のあるOSバージョンをターゲットにしていることを確認する
Getting Startedから続けて
「Getting Startedから続けて」」というセクションCapgoを使用している場合 Getting Started nativeプラグインの作業を計画するには、Capgoと接続する必要があります。 Capgoの@capgo/capacitor-watchを使用 Capgoの@capgo/capacitor-watchのnative機能について Capgo プラグインディレクトリ for the product workflow in Capgo Plugin Directory, Capacitor プラグインはCapgo for the implementation detail in Capacitor Plugins by Capgo, Capgo プラグインを追加または更新する Capgo プラグインを追加または更新するの実装詳細について Ionic Enterprise プラグインの代替 Ionic Enterprise プラグイン代替品の製品ワークフローについてです。