내용으로 건너뛰기

Getting Started

GitHub

설치

설치

AI-Assisted 설치를 사용하여 플러그인을 설치할 수 있습니다. 다음 명령어를 사용하여 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.

만약 Manual Setup을 선호한다면, 플러그인을 설치하기 위해 다음 명령어를 실행하고 아래의 플랫폼별 지침을 따르세요:

  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. iOS 앱에 WatchConnectivity 기능을 Xcode에서 추가하세요.
    2. watchOS 앱 목표를 Xcode 프로젝트에 생성하세요.
    3. watchOS 앱에서 WatchConnectivity를 implement하세요 (Watch App Implementation 참조)

    플러그인은 플러그인이 로드될 때 자동으로 WCSession을 활성화합니다.

  4. __CAPGO_KEEP_0__

    // 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. __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 watch
    await CapgoWatch.addListener('applicationContextReceived', (event) => {
    console.log('Context from watch:', event.context);
    });
  6. __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 transfers
    await CapgoWatch.addListener('userInfoReceived', (event) => {
    console.log('User info from watch:', event.userInfo);
    });
  7. __CAPGO_KEEP_0__

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

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

Your watchOS app needs to implement WatchConnectivity. Here’s a SwiftUI example:

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 Reference

API Reference

sendMessage(options: SendMessageOptions)

__CAPGO_KEEP_1__

__CAPGO_KEEP_1__

Parameters:

  • data__CAPGO_KEEP_2__ - __CAPGO_KEEP_3__

updateApplicationContext(options: UpdateContextOptions)

__CAPGO_KEEP_0__

__CAPGO_KEEP_4__

파라미터:

  • context: Object - sync하기 위한 컨텍스트 데이터

신뢰할 수 있는 전달을 위해 사용자 정보를 대기열에 넣습니다.

파라미터:

  • userInfo: Object - 전달할 사용자 정보

응답이 요청된 메시지에 대한 응답을 보내세요.

파라미터:

  • callbackId: string - messageReceivedWithReply 이벤트에서 콜백 ID
  • data: Object - 응답 데이터

연결 상태를 감시합니다.

반환: WatchInfo 객체에 포함된 항목:

  • isSupported: boolean - WatchConnectivity가 사용 가능 여부
  • isPaired: boolean - 시계가 pair된 여부
  • isWatchAppInstalled: boolean - 시계 앱이 설치된 여부
  • isReachable: boolean - 시계가 접속 가능한 여부
  • activationState: number - 세션 상태 (0/1/2)

getPluginVersion()

버전을 가져옵니다.

이벤트

이벤트설명
messageReceived시계에서 오는 단순 메시지
messageReceivedWithReply대답을 기대하는 메시지 (callbackId 포함)
applicationContextReceived시계에서 오는 컨텍스트 업데이트
userInfoReceived시계에서 오는 사용자 정보
reachabilityChanged시계와의 연결 상태가 변경되었습니다
activationStateChanged세션 활성화 상태가 변경되었습니다

즉시 메시징 (sendMessage)sendMessage)

즉시 메시징 (sendMessage) 섹션
  • 시계가 연결 가능할 때까지 watch가 도달해야 함
  • 사용자와 상호 작용하는 시간에 민감한 통신을 위해 가장 좋음
  • 시계가 사용 가능하지 않으면 즉시 실패

응용 프로그램 컨텍스트 (updateApplicationContext)

응용 프로그램 컨텍스트 (updateApplicationContext)라는 제목의 섹션
  • 최신 값만 전달 - 이전 값은 덮어씌움
  • 현재 앱 상태를 동기화하는 데 가장 좋음
  • 시계가 사용 가능할 때 전달
  • 순서대로 큐에 저장되어 전달
  • 중요한 데이터를 전달해야 하는 경우 가장 좋음
  • __CAPGO_KEEP_0__

__CAPGO_KEEP_1__

플랫폼 참고 사항

iOS

iOS
  • iOS 15.0 이상 필요
  • WatchConnectivity 프레임워크 사용
  • __CAPGO_KEEP_2__
  • __CAPGO_KEEP_3__

__CAPGO_KEEP_4__

Android
  • Android
  • 모든 메소드는 적절한 오류로 거부합니다.
  • getInfo() returns isSupported: false
  • 지원하지 않음
  • 모든 메소드는 사용할 수 없는 오류로 거부합니다.
  • getInfo() returns isSupported: false

일반적인 사용 사례

일반적인 사용 사례 섹션
  1. 데이터 동기화데이터를 모바일과 컴퓨터에 동기화하여 보관합니다.
  2. 원격 제어__CAPGO_KEEP_0__
  3. 알림__CAPGO_KEEP_0__
  4. 건강 데이터__CAPGO_KEEP_0__
  5. 미디어 제어__CAPGO_KEEP_0__
  6. 스마트 홈__CAPGO_KEEP_0__

문제 해결

__CAPGO_KEEP_0__

시계가 연결되지 않음: __CAPGO_KEEP_0__

  • __CAPGO_KEEP_0__의 Bluetooth 범위 내에 있어야 합니다.
  • __CAPGO_KEEP_0__가 모두 실행 중인지 확인하세요.
  • __CAPGO_KEEP_0__가 양쪽에서 활성화되어 있는지 확인하세요.

받지 못한 메시지:

  • __CAPGO_KEEP_0__가 메시지를 보내기 전에 리스너가 등록되어 있는지 확인하세요.
  • __CAPGO_KEEP_0__가 WCSessionDelegate를 implement하고 있는지 확인하세요.
  • __CAPGO_KEEP_0__ transferUserInfo __CAPGO_KEEP_0__를 사용하여 보장된 전달을 보장하세요.

__CAPGO_KEEP_0__가 활성화되지 않은 경우:

  • __CAPGO_KEEP_0__에서 WatchConnectivity 기능이 추가되어 있는지 확인하세요.
  • __CAPGO_KEEP_0__가 동반 앱의 번들 ID를 가지고 있는지 확인하세요.
  • 양쪽 앱이 호환 가능한 OS 버전을 대상으로하고 있는지 확인하세요.

시작부터 계속하기

시작부터 계속하기 섹션

Capacitor를 사용 중이라면 Getting Started Capacitor를 사용하여 네이티브 플러그인 작업을 계획하고 싶다면, 그것을 Using @capgo/capacitor-watch Using @capgo/capacitor-watch에서 네이티브 기능을 사용할 때 Capgo 플러그인 디렉토리 Capgo 플러그인 디렉토리에서 제품 워크플로우를 사용할 때 Capacitor 플러그인들에 의해 Capgo Capacitor 플러그인들에 의해 Capgo에서 구현 세부 정보를 사용할 때 플러그인을 추가하거나 업데이트 __CAPGO_KEEP_0__ 구현 세부 사항에 대한 정보는 Adding or Updating Plugins 항목에서 찾을 수 있습니다. Ionic Enterprise Plugin 대체 옵션 __CAPGO_KEEP_0__ 제품 워크플로우는 Ionic Enterprise Plugin Alternatives 항목에서 설명되어 있습니다.