开发完演
このプラグインのインストール手順とフルマークダウンガイドを含むセットアップ用の質問をコピーしてください。
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);});ウォッチにメッセージを送信:
// 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アプリの実装を参照)
プラグインは、プラグインが読み込まれたときに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);});
ウォッチアプリの実装を参照する
「ウォッチアプリの実装」をタイトルにしたセクションウォッチOSアプリは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 - メッセージを受信したイベントから取得したコールバックIDdata: Object - 返信データ
getInfo()
セクション “getInfo()”ウォッチの接続状態を取得する。
戻り値: WatchInfo オブジェクトに含まれる:
isSupported: boolean - WatchConnectivity が利用可能かisPaired: boolean - ウォッチが pair されているかisWatchAppInstalled: boolean - ウォッチアプリがインストールされているかisReachable: boolean - ウォッチが接続されているかactivationState数字 - セッション状態 (0/1/2)
getPluginVersion()
セクション「getPluginVersion()」ネイティブ プラグインのバージョンを取得します。
イベント
セクション「イベント」| イベント | 説明 |
|---|---|
messageReceived | ウォッチから送信された単純なメッセージ |
messageReceivedWithReply | メッセージに返信を期待する (コールバック ID を含む) |
applicationContextReceived | ウォッチからコンテキストが更新されました |
userInfoReceived | ウォッチからユーザー情報が転送されました |
reachabilityChanged | ウォッチの接続状態が変更されました |
activationStateChanged | セッションの有効化状態が変更されました |
コミュニケーション パターン
「コミュニケーション パターン」のセクション即時メッセージング (sendMessage)
「即時メッセージング (sendMessage)」のセクション- ウォッチが利用可能であることを確認する必要があります
- リアルタイムの、時間の経過とともに変化するコミュニケーションに適しています
- ウォッチが利用できない場合、すぐに失敗します
アプリケーション コンテキスト (updateApplicationContext)
「アプリケーション コンテキスト (updateApplicationContext)」のセクション- 最新の値のみ - 以前の値は上書きされます
- 現在のアプリの状態を同期するために最適です
- __CAPGO_KEEP_0__が利用可能になったときに送信されます。
__CAPGO_KEEP_0__情報の転送 (transferUserInfo)transferUserInfo)
「__CAPGO_KEEP_0__情報の転送 (transferUserInfo)」セクション- 順番にキューイングされ、送信されます。
- 重要なデータを送信する必要がある場合に最適です。
- 時計が一時的にアクセスできない場合でも機能します。
プラットフォームに関する注意
「プラットフォームに関する注意」セクションiOS
「iOS」セクション- iOS 15.0 以降を必要とします。
- WatchConnectivity フレームワークを使用します。
- プラグイン読み込み時に自動でセッションが有効になります。
- コンテキストとユーザー情報のバックグラウンド配信をサポート
Android
「Android」- サポートされていません (Apple WatchはiOS専用)
- すべてのメソッドは適切なエラーで拒否されます。
getInfo()returnsisSupported: false
Web
「Web」- サポートされていません
- すべてのメソッドは利用できないエラーで拒否されます。
getInfo()returnsisSupported: false
一般的な使用例
一般的な使用例のセクション- データ同期: 時計とスマートフォンのデータを同期しておきます
- リモートコントロール: 時計からスマートフォンの機能を制御します
- 通知: カスタム通知を時計に送信します
- 健康データ: フィットネスと健康指標を共有します
- メディアコントロール: 時計から音楽再生を制御します
- スマートホーム:腕時計からデバイスを制御する
トラブルシューティング
「トラブルシューティング」のセクション腕時計が到達できません:
- 腕時計がBluetoothの範囲内にあることを確認してください
- 両方のアプリが実行されていることを確認してください
- 両方の端末でWCSessionが有効になっていることを確認してください
メッセージが受信できません:
- リスナが登録されていることを確認して、メッセージを送信する前に
- 腕時計アプリがWCSessionDelegateを実装していることを確認してください
- 使用
transferUserInfo確実な配達のために
セッションが有効になっていません:
- XcodeでWatchConnectivity機能を追加してください
- ウォッチアプリがコンパニオンのバンドルIDを持っていることを確認してください
- 両方のアプリが互換性のあるOSバージョンをターゲットにしていることを確認してください