コンテンツにスキップ

Getting Started

GitHub

Capgoを使用して、AIツールにスキルを追加できます。以下のコマンドを実行してください:

ターミナル画面
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.

手動セットアップを使用する場合は、以下のコマンドを実行してプラグインをインストールし、以下のプラットフォーム固有の説明を参照してください:

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

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

    ターミナル画面
    bunx cap sync
  3. __CAPGO_KEEP_0__を設定

    基本的な使用例:

    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);
    });

    __CAPGO_KEEP_2__にメッセージを送信:

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

    __CAPGO_KEEP_0__のiOS設定:

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

    プラグインが読み込まれたときに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
    await CapgoWatch.replyToMessage({
    callbackId: event.callbackId,
    data: { 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);
    });

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 リファレンス

メソッド

メソッド

sendMessage(options: SendMessageOptions)

sendMessage(options: SendMessageOptions) "

時計にインタラクティブなメッセージを送信します。時計が接続可能である必要があります。

パラメーター:

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

updateApplicationContext(options: UpdateContextOptions)

updateApplicationContext(options: UpdateContextOptions) "

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

パラメータ:

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

信頼性の高い配信用にユーザー情報をキューに追加。

パラメータ:

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

メッセージが返信を要求した場合に返信します。

パラメータ:

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

時計接続状態を取得します。

戻り値: WatchInfo オブジェクトに含まれる:

  • isSupported: boolean - 時計接続機能が利用可能か
  • isPaired: boolean - 時計が pair されているか
  • isWatchAppInstalled: boolean - 時計アプリがインストールされているか
  • isReachable: boolean - 時計に接続できるか
  • activationState: number - セッション状態 (0/1/2)

ネイティブ プラグインのバージョンを取得します。

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

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

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

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

即時メッセージング (sendMessage)
  • __CAPGO_KEEP_0__を監視して到達可能である必要があります
  • __CAPGO_KEEP_0__は、リアルタイムで重要なコミュニケーションに最適です
  • __CAPGO_KEEP_0__が利用できない場合に即座に失敗します

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

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

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

セクション「ユーザー情報の転送 (transferUserInfo)」
  • __CAPGO_KEEP_0__は、順序に従ってキューイングされ、送信されます
  • __CAPGO_KEEP_0__は、重要なデータを送信するために最適です
  • __CAPGO_KEEP_0__は時計が一時的にアクセスできなくても動作します

__CAPGO_KEEP_1__

__CAPGO_KEEP_2__

__CAPGO_KEEP_3__

__CAPGO_KEEP_4__
  • __CAPGO_KEEP_5__
  • __CAPGO_KEEP_6__フレームワークを使用
  • __CAPGO_KEEP_7__プラグインを読み込むと自動的にセッションが有効になります
  • __CAPGO_KEEP_8__はコンテキストとユーザー情報のバックグラウンド配信をサポートしています

__CAPGO_KEEP_9__

__CAPGO_KEEP_10__
  • __CAPGO_KEEP_11__はサポートされていません (Apple WatchはiOSのみです)
  • すべてのメソッドは適切なエラーで拒否される
  • getInfo() __CAPGO_KEEP_0__ isSupported: false
  • サポートされていません
  • すべてのメソッドは利用できないエラーで拒否される
  • getInfo() __CAPGO_KEEP_1__ isSupported: false
  1. データ同期__CAPGO_KEEP_2__:電話とパソコンのデータを同期しておけます
  2. __CAPGO_KEEP_3__:リモートでコントロールできます: __CAPGO_KEEP_0__
  3. 通知: __CAPGO_KEEP_1__
  4. : __CAPGO_KEEP_2__健康データ
  5. : __CAPGO_KEEP_3__メディアコントロール
  6. : __CAPGO_KEEP_4__スマートホーム

: __CAPGO_KEEP_6__ (トラブルシューティングのセクションです。

  • __CAPGO_KEEP_0__はBluetoothの範囲内にいることを確認してください
  • __CAPGO_KEEP_1__が両方実行されていることを確認してください
  • 両方のアプリでWCSessionが有効になっていることを確認してください

メッセージを受け取らない場合:

  • __CAPGO_KEEP_2__がリスナーを登録する前に送信することを確認してください
  • ウォッチアプリがWCSessionDelegateを実装していることを確認してください
  • __CAPGO_KEEP_3__ transferUserInfo 送信するには確実に配信されるようにする

Sessionが有効にならない場合:

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

Getting Startedから続けてください

Getting Startedから続けてください

Capgoを使用している場合 Getting Started Capgoを使用してnative pluginの作業計画を行う場合、Capgoをnative capabilityと接続します。 Using @capgo/capacitor-watch for the native capability in Using @capgo/capacitor-watch, Capgo Plugin Directory for the product workflow in Capgo Plugin Directory, Capacitor Plugins by Capgo for the implementation detail in Capacitor Plugins by Capgo, Capgoプラグインの追加または更新 実装詳細の追加または更新の際の詳細については、 Ionic Enterprise プラグインの代替 Ionic Enterprise プラグインの製品ワークフローについては、