コンテンツに進む

はじめに

GitHub

CapgoのAI-Assisted Setupを使用してプラグインをインストールできます。次のコマンドを使用して、CapgoスキルをAIツールに追加します。

Installation
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を使用する場合は、以下のコマンドを実行してください。プラットフォーム固有の指示に従ってください。

  1. パッケージをインストール

    ターミナルウィンドウ
    bun add @capgo/capacitor-watch
  2. ネイティブプロジェクトと同期

    ターミナルウィンドウ
    bunx cap sync
  3. プラグインを設定

    基本的な使用例:

    import { CapgoWatch } from '@capgo/capacitor-watch';
    // Check watch connectivity status
    const info = await CapgoWatch.getInfo();
    console.log('Watch paired:', info.isPaired);
    console.log('Watch reachable:', info.isReachable);
    // Listen for messages from watch
    await CapgoWatch.addListener('messageReceived', (event) => {
    console.log('Message from watch:', event.message);
    });

    Watchにメッセージを送信:

    // Check if watch is reachable first
    const info = await CapgoWatch.getInfo();
    if (info.isReachable) {
    await CapgoWatch.sendMessage({
    data: { action: 'refresh', timestamp: Date.now() }
    });
    }

    必要なiOS設定:

    1. XcodeでiOSアプリにWatchConnectivity機能を追加する
    2. XcodeプロジェクトにwatchOSアプリターゲットを作成する
    3. watchOSアプリでWatchConnectivityを実装する(下記のWatchアプリ実装を参照)

    プラグインは、プラグインが読み込まれたときにWCSessionを自動的に有効にします。

  4. 返信が必要なメッセージを処理する

    // Listen for messages that need a response
    await CapgoWatch.addListener('messageReceivedWithReply', async (event) => {
    console.log('Request from watch:', event.message);
    // Process the request
    const result = await processWatchRequest(event.message);
    // Send reply back to watch (include requestId for Wear OS correlation)
    await CapgoWatch.replyToMessage({
    callbackId: event.callbackId,
    data: {
    requestId: event.message.requestId,
    result,
    },
    });
    });
  5. アプリケーション状態を同期する

    // Update application context (latest value only)
    await CapgoWatch.updateApplicationContext({
    context: {
    theme: 'dark',
    userId: '123',
    lastSync: Date.now()
    }
    });
    // Listen for context updates from watch
    await CapgoWatch.addListener('applicationContextReceived', (event) => {
    console.log('Context from watch:', event.context);
    });
  6. ユーザー情報を信頼性の高い方法で転送する

    // 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 transfers
    await CapgoWatch.addListener('userInfoReceived', (event) => {
    console.log('User info from watch:', event.userInfo);
    });
  7. 接続性を監視する

    // Track reachability changes
    await CapgoWatch.addListener('reachabilityChanged', (event) => {
    console.log('Watch reachable:', event.isReachable);
    if (event.isReachable) {
    // Watch is now available for interactive messaging
    }
    });
    // Track session activation state
    await CapgoWatch.addListener('activationStateChanged', (event) => {
    // 0 = notActivated, 1 = inactive, 2 = activated
    console.log('Session state:', event.state);
    });

Watch App実装

Watch App実装

watchOSアプリでは、WatchConnectivityを実装する必要があります。以下は、SwiftUIの例です。

import SwiftUI
import WatchConnectivity
@main
struct 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 Reference

メソッド

メソッド

時計にインタラクティブなメッセージを送信します。時計が接続可能な場合にのみ使用できます。

パラメータ:

  • data: Object - 送信する時計に送信するデータ

updateApplicationContext(options: UpdateContextOptions)

updateApplicationContext(options: UpdateContextOptions)というセクション

アプリケーションコンテキストを更新します。最新の値のみが保持されます。

パラメータ:

  • context: Object - 同期するコンテキストデータ

ユーザー情報を信頼性の高い方法で配信する準備ができました。

パラメーター:

  • userInfo: Object - 転送するユーザー情報

メッセージに返信する必要がある場合に返信します。

パラメーター:

  • callbackId: string - messageReceivedWithReply イベントから取得したコールバックID
  • data: Object - 返信データ

ウォッチの接続状態を取得します。

戻り値: WatchInfo オブジェクトに:

  • isSupported: boolean - このプラットフォームでウォッチAPIが利用可能か
  • isPaired: boolean - Apple Watchが pairされている (iOS) または Wear OSノードが少なくとも1つ接続されている (Android)
  • isWatchAppInstalled: boolean - Companionウォッチアプリがインストールされている (iOS) または (Android) capgo_watch : boolean - ウォッチアプリの機能が検出されている
  • isReachable: boolean - ウォッチが即時メッセージングで利用可能か
  • activationState: number - セッション状態 (iOS WCSession; Android 2 ではノードが接続されている場合、0 ではありません)

ウォッチプラグインのネイティブバージョンを取得する

イベント概要
messageReceivedウォッチからのシンプルなメッセージ
messageReceivedWithReply返信を待つメッセージ (callbackIdを含む)
applicationContextReceivedウォッチからのコンテキスト更新
userInfoReceivedウォッチからユーザー情報の転送
reachabilityChangedウォッチの接続状態が変更された (iOSのみ)
activationStateChangedセッションの有効化状態が変更された (iOSのみ)

コミュニケーション パターン

コミュニケーション パターン

即時メッセージング (sendMessage)sendMessage)

ウォッチが接続可能であることを要求します
  • コミュニケーション パターン
  • インタラクティブでタイムセンシティブなコミュニケーション向けに最適
  • ウォッチが利用可能でない場合に即座に失敗

アプリケーション コンテキスト (updateApplicationContext)updateApplicationContext)

セクション「アプリケーション コンテキスト (updateApplicationContext)」
  • 最新値のみ - 前の値は上書き
  • 現在のアプリの状態を同期するために最適
  • ウォッチが利用可能になったときに送信

ユーザー情報の転送 (transferUserInfo)transferUserInfo)

セクション「ユーザー情報の転送 (transferUserInfo)」
  • 順序に従ってキューイングされ、送信
  • 重要なデータを送信するために最適
  • ウォッチが一時的に利用不能でも機能

プラットフォームに関する注意

プラットフォームに関する注意

以下の プラグインの概要で、方法ごとのマトリックスを確認してください。 iOS (Apple Watch)

iOS (Apple Watch)に関するセクション

iOS 15.0 以降を必要とします
  • WatchConnectivity フレームワークを使用します
  • プラグインの読み込み時にセッションが自動的に有効になります
  • 背景でのコンテキストとユーザー情報の配信をサポートします
  • 発行
  • Emits reachabilityChanged Japanese activationStateChanged

/ja/docs/plugins/watch/getting-started/

Live Update
  • Cloudflareplay-services-wearableCapacitor
  • GitHub Capgo applicationId Japanese code
  • API capgo_watch
  • SDK CLI emit reachabilityChanged または activationStateChanged; poll getInfo() または
  • 必要に応じて セットアップガイド:

ウェアOSアプリの作成

Web
  • 「Web」というセクション
  • getInfo() ブラウザではウォッチメッセージがサポートされていません isSupported: false 解決されるのは
  • getPluginVersion() ブラウザではウォッチメッセージがサポートされていません { version: "web" }
  • sendMessage, updateApplicationContext, transferUserInfo、そして replyToMessage 利用できないエラーで拒否する
  • addListener Capacitorを使用してハンドルを解決します。 WebPlugin、しかし、ブラウザではウォッチイベントがサポートされていないため (コールバックは実行されません)

一般的な使用例

「一般的な使用例」
  1. データ同期:ウォッチと携帯電話のデータを同期する
  2. リモートコントロール:ウォッチから携帯電話の機能を制御する
  3. 通知context
  4. 健康データ: フィットネスと健康指標を共有する
  5. メディアコントロール: ウォッチから音楽再生を制御する
  6. スマートホーム: 腕時計からデバイスを制御する

トラブルシューティング

: トラブルシューティング

ウォッチが接続できません:

  • ウォッチがBluetoothの範囲内にあることを確認する
  • 両方のアプリが実行されていることを確認する
  • 両方の側でWCSessionが有効になっていることを確認する

メッセージが受信されない:

  • リスナーが登録されていることを確認してください
  • WCSessionDelegateを実装しているWatchアプリを確認してください
  • を使用 transferUserInfo 確実に配信されるように

セッションが有効にならない:

  • XcodeでWatchConnectivity機能が追加されていることを確認してください
  • Watchアプリがコンパニオンのbundle IDを持っていることを確認してください
  • 両方のアプリが互換性のあるOSバージョンをターゲットにしていることを確認してください

コンパニオンアプリを使用している場合 はじめに ネイティブ プラグインの作業を計画するには、 @capgo/capacitor-watchを使用 ネイティブ機能の@capgo/capacitor-watchを使用 Capgo プラグイン ディレクトリ Capgo プラグイン ディレクトリ Capacitor プラグインは Capgo によって提供されます。 Capgoのプラグインの実装詳細については、CapacitorプラグインによってCapgoで管理されます。 プラグインの追加または更新 プラグインの追加または更新 Ionic Enterprise プラグインの代替 Ionic Enterprise プラグインの代替