__CAPGO_KEEP_0__ 시작하기
설치 단계와 이 플러그인의 전체 마크다운 가이드를 포함하여 설정 지시를 복사하세요.
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.
설치
설치 제목AI-Assisted Setup을 사용하여 플러그인을 설치할 수 있습니다. AI 도구에 Capgo 스킬을 추가하려면 다음 명령어를 사용하세요:
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을 선호한다면, 플러그인을 설치하기 위해 다음 명령어를 실행하고 아래에 플랫폼에 따라 설명된 지침을 따르세요:
-
패키지를 설치하세요
터미널 창 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_2__
__CAPGO_KEEP_2____CAPGO_KEEP_3__
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__CAPGO_KEEP_4__
__CAPGO_KEEP_5__sendMessage(options: SendMessageOptions)
__CAPGO_KEEP_6__시계에 인터랙티브 메시지를 보내세요. 시계가 접근 가능해야 합니다.
파라미터:
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()
getPluginVersion() 섹션자연 플러그인 버전을 가져옵니다.
이벤트
이벤트 섹션| 이벤트 | 설명 |
|---|---|
messageReceived | 시계에서 단순한 메시지 |
messageReceivedWithReply | 응답을 포함하는 메시지 (callbackId 포함) |
applicationContextReceived | 시계에서 컨텍스트 업데이트 |
userInfoReceived | 시계에서 사용자 정보 전송 |
reachabilityChanged | 시계와의 연결 변경 |
activationStateChanged | 세션 활성화 상태가 변경되었습니다. |
통신 패턴
‘통신 패턴’ 제목즉시 메시징 (sendMessage)
‘즉시 메시징 (sendMessage)’ 제목- watch가 접근 가능해야 함
- 인터랙티브 및 시간敏감적인 통신에 적합
- watch가 사용 가능하지 않으면 즉시 실패
애플리케이션 컨텍스트 (updateApplicationContext)
‘애플리케이션 컨텍스트 (updateApplicationContext)’ 제목- 최신 값만 제공 - 이전 값은 덮어씌움
- 현재 앱 상태 동기화에 적합
- 시계가 사용 가능해질 때 전달
사용자 정보 전송 (transferUserInfo)
사용자 정보 전송 (transferUserInfo) 섹션- 순서대로 큐에 넣어 전달
- 중요한 데이터를 전달해야 하는 경우 가장 좋음
- 시계가 일시적으로 연결되지 않아도 작동
- WatchConnectivity 프레임워크 사용
- iOS 15.0 이상이 필요
- __CAPGO_KEEP_0__ 자동 활성화
- __CAPGO_KEEP_1__을 위한 배경 전송을 지원합니다.
Android
Android- __CAPGO_KEEP_2__는 iOS만 지원합니다.
- __CAPGO_KEEP_3__
getInfo()__CAPGO_KEEP_4__isSupported: false
__CAPGO_KEEP_5__
Web- __CAPGO_KEEP_6__
- __CAPGO_KEEP_7__
getInfo()__CAPGO_KEEP_8__isSupported: false
일반 사용 사례
일반 사용 사례- 데이터 동기화: 휴대폰과腕목 기기 데이터를 동기화
- 원격 제어:腕목 기기에서 휴대폰 기능 제어
- 通知: 사용자 지정 알림을腕목 기기로 전송
- 건강 데이터: 운동 및 건강 지표 공유
- 미디어 제어:腕목 기기에서 음악 재생 제어
- Smart Home: Control devices from your wrist
Troubleshooting
Section titled “Troubleshooting”Watch not reachable:
- Ensure watch is within Bluetooth range
- Check that both apps are running
- Verify WCSession is activated on both sides
Messages not received:
- Check that listeners are registered before sending
- Verify the watch app implements WCSessionDelegate
- Use
transferUserInfo__CAPGO_KEEP_0__의 보장된 배송을 위해
__CAPGO_KEEP_1__ 활성화되지 않은 세션:
- Xcode에서 WatchConnectivity 기능이 추가되어야 함
- 시계 앱이 동반된 번들 ID를 가지고 있는지 확인하세요
- 두 앱이 호환 가능한 OS 버전을 대상으로 하는지 확인하세요
Getting Started에서 계속하기
Getting Started에서 계속하기라는 제목을 가진 섹션__CAPGO_KEEP_0__을 사용하는 경우 Getting Started __CAPGO_KEEP_0__을 __CAPGO_KEEP_1__와 연결하여 @capgo/capacitor-watch를 사용하여 capgo/capacitor-watch의 네이티브 기능을 위해 Capgo 플러그인 디렉토리 Capgo 플러그인 디렉토리에서 제품 워크플로우를 위해 Capacitor 플러그인들에 의해 Capgo Capacitor 플러그인들에 의해 Capgo에서 구현 세부 정보를 위해 플러그인을 추가하거나 업데이트 플러그인을 추가하거나 업데이트에 대한 구현 세부 정보를 위해, 그리고 아이오닉 엔터프라이즈 플러그인 대체 아이오닉 엔터프라이즈 플러그인 대체의 제품 워크플로우를 위해