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