시작하기
설치 단계와 이 플러그인의 전체 마크다운 가이드가 포함된 설정 지시문을 복사하세요.
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를 implement하세요 (Watch App Implementation 참조)
플러그인은 플러그인이 로드될 때 자동으로 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);}); -
__CAPGO_KEEP_1__
// 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);});
__CAPGO_KEEP_3__
__CAPGO_KEEP_4____CAPGO_KEEP_5__
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
Section titled “API Reference”__CAPGO_KEEP_9__
__CAPGO_KEEP_10__sendMessage(options: SendMessageOptions)
__CAPGO_KEEP_11__시계에 인터랙티브 메시지를 보내십시오. 시계가 접근 가능해야 합니다.
매개 변수:
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 - 메시지ReceivedWithReply 이벤트의 callback IDdata: Object - 응답 데이터
getInfo()
getInfo() 제목시계 연결 상태를 가져옵니다.
반환: WatchInfo 객체에:
isSupported: boolean - 시계 연결이 가능합니다.isPaired: boolean - 시계가 pair되었습니다.isWatchAppInstalled: boolean - 시계 앱이 설치되었습니다.isReachable: boolean - 시계가 접근 가능합니다.activationState: 번호 - 세션 상태 (0/1/2)
getPluginVersion()
Section titled “getPluginVersion()”원시 플러그인 버전을 가져옵니다.
| 이벤트 | 설명 |
|---|---|
messageReceived | 시계에서 단순한 메시지 |
messageReceivedWithReply | 응답을 포함하는 콜백 ID가 있는 메시지를 기대합니다. |
applicationContextReceived | 시계에서 컨텍스트 업데이트 |
userInfoReceived | 시계에서 사용자 정보 전송 |
reachabilityChanged | 시계와의 연결이 변경되었습니다. |
activationStateChanged | 세션 활성화 상태가 변경되었습니다. |
통신 패턴
통신 패턴즉시 메시징 (sendMessage)
즉시 메시징 (sendMessage)- watch가 접근 가능해야 합니다.
- 시간에 민감한, 상호 작용적인 통신에 적합합니다.
- watch가 사용 불가능할 경우 즉시 실패합니다.
애플리케이션 컨텍스트 (updateApplicationContext)
Section titled “Application Context (updateApplicationContext)”- 최신 값만 제공 - 이전 값은 덮어씁니다.
- 현재 앱 상태 동기화에 적합합니다.
- __CAPGO_KEEP_0__ 자동 활성화
- __CAPGO_KEEP_1__을 위한 배경 전송 지원
__CAPGO_KEEP_2__
__CAPGO_KEEP_3__- __CAPGO_KEEP_4__ (iOS 전용 Apple Watch)
- __CAPGO_KEEP_5__
getInfo()__CAPGO_KEEP_6__isSupported: false
__CAPGO_KEEP_7__
__CAPGO_KEEP_8__- __CAPGO_KEEP_9__
- __CAPGO_KEEP_10__
getInfo()__CAPGO_KEEP_11__isSupported: false
일반 사용 사례
일반 사용 사례- 데이터 동기화: 휴대폰과腕목 기기의 데이터를 동기화
- 원격 제어:腕목 기기에서 휴대폰 기능을 제어
- 通知: 사용자 지정 알림을腕목 기기로 전송
- 건강 데이터: 운동 및 건강 지표를 공유
- 미디어 제어:腕목 기기에서 음악 재생을 제어
- Smart Home손목 시계에서 장치를 제어하세요
문제 해결
문제 해결시계가 연결되지 않음:
- 시계가 블루투스 범위 내에 있는지 확인하세요
- 모두의 앱이 실행 중인지 확인하세요
- WCSession이 양쪽에서 활성화되어 있는지 확인하세요
메시지가 수신되지 않음:
- 리스너가 등록되기 전에 메시지를 보낼 때 확인하세요
- 시계 앱이 WCSessionDelegate를 implement했는지 확인하세요
- 사용
transferUserInfo보장된 배송을 위해
세션 활성화되지 않음:
- Xcode에서 WatchConnectivity 기능이 추가되어야 함
- 시계 앱이 동반 번들 ID를 가지고 있는지 확인하세요
- 두 앱이 호환 가능한 OS 버전을 대상으로 하는지 확인하세요