내용으로 건너뛰기

Getting Started

GitHub
  1. __CAPGO_KEEP_4__

    __CAPGO_KEEP_5__
    bun add @capgo/capacitor-watch
  2. __CAPGO_KEEP_7__

    __CAPGO_KEEP_8__
    bunx cap sync
  3. __CAPGO_KEEP_10__

    __CAPGO_KEEP_11__

    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 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 Reference

API Reference

메서드

메서드

시계를 찾을 수 있는 경우 시계에 인터랙티브 메시지를 보내세요.

매개 변수:

  • data: Object - 시계로 보낼 데이터

updateApplicationContext(options: UpdateContextOptions)

updateApplicationContext(options: UpdateContextOptions)라는 제목의 섹션

애플리케이션 컨텍스트를 업데이트하세요. 최신 값만 유지됩니다.

매개 변수:

  • context: Object - 동기화할 컨텍스트 데이터

사용자 정보를 신뢰할 수 있는 전송으로 대기합니다.

매개 변수:

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

메시지에 대한 응답을 합니다.

매개 변수:

  • callbackId: string - messageReceivedWithReply 이벤트에서 받은 callback ID
  • data: Object - 응답 데이터

watch 연결 상태를 가져옵니다.

반환 값: WatchInfo 객체에:

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

getPluginVersion()

버전 가져오기

Section titled “getPluginVersion()”

이벤트설명
messageReceived__CAPGO_KEEP_0__
messageReceivedWithReply__CAPGO_KEEP_1__ (callbackId)
applicationContextReceived__CAPGO_KEEP_2__
userInfoReceived__CAPGO_KEEP_3__
reachabilityChanged__CAPGO_KEEP_4__
activationStateChanged__CAPGO_KEEP_5__

통신 방식

통신 방식

즉시 메시징 (sendMessage)sendMessage)

__CAPGO_KEEP_6__
  • 시동이 필요한 상호 작용 및 시간에 민감한 통신
  • 즉시 메시징 (sendMessage)
  • __CAPGO_KEEP_0__이 즉시 실패합니다.

__CAPGO_KEEP_1__ (updateApplicationContext)

__CAPGO_KEEP_2__ (updateApplicationContext)
  • __CAPGO_KEEP_3__ - 이전 값은 덮어씌워집니다.
  • __CAPGO_KEEP_4__를 위해 현재 앱 상태 동기화
  • __CAPGO_KEEP_5__가 사용 가능해질 때

__CAPGO_KEEP_6__ (transferUserInfo)

__CAPGO_KEEP_7__ (transferUserInfo)
  • __CAPGO_KEEP_8__와 함께 큐에 넣어져 순서대로 전달됩니다.
  • __CAPGO_KEEP_9__를 위해 중요한 데이터 전달
  • __CAPGO_KEEP_10__가 임시로 사용할 수 없을 때도 작동합니다.

__CAPGO_KEEP_11__

플랫폼 참고 사항

iOS

iOS
  • iOS 15.0 이상이 필요합니다
  • WatchConnectivity 프레임워크 사용
  • 플러그인 로드 시 세션 자동 활성화
  • 컨텍스트 및 사용자 정보를 위한 배경 전달 지원

Android

Android
  • Apple Watch는 iOS 전용이므로 지원되지 않습니다
  • 모든 메소드는 적절한 오류로 거부합니다
  • getInfo() returns isSupported: false

__CAPGO_KEEP_0__

__CAPGO_KEEP_1__
  • __CAPGO_KEEP_2__
  • __CAPGO_KEEP_3__
  • getInfo() __CAPGO_KEEP_4__ isSupported: false

__CAPGO_KEEP_5__

__CAPGO_KEEP_6__
  1. __CAPGO_KEEP_7____CAPGO_KEEP_8__
  2. __CAPGO_KEEP_9____CAPGO_KEEP_10__
  3. __CAPGO_KEEP_11__: __CAPGO_KEEP_0__을 사용하여 개인화된 알림을 시계로 전송하세요.
  4. 건강 데이터: 시계와 함께 운동 및 건강 지표를 공유하세요.
  5. 미디어 제어: 시계에서 음악 재생을 제어하세요.
  6. 스마트 홈: 손목에서 장치를 제어하세요.

문제 해결

문제 해결

시계 접근 불가:

  • 블루투스 범위 내에 시계가 있는지 확인하세요.
  • 앱이 모두 실행 중인지 확인하세요.
  • __CAPGO_KEEP_0__ 활성화 여부를 확인하세요.

__CAPGO_KEEP_1__을 받지 못했습니다.

  • __CAPGO_KEEP_2__가 등록되어 있는지 확인하세요.
  • __CAPGO_KEEP_0__를 구현하는 시계 앱을 확인하세요.
  • __CAPGO_KEEP_3__ transferUserInfo __CAPGO_KEEP_4__를 보장합니다.

__CAPGO_KEEP_0__가 활성화되지 않았습니다.

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

__CAPGO_KEEP_5__에서 계속하세요.

__CAPGO_KEEP_6__에서 계속하세요.

If you are using __CAPGO_KEEP_0__ Getting Started native 플러그인 작업을 계획하는 경우 __CAPGO_KEEP_0__과 연결하세요. capgo/capacitor-watch를 사용하여 native 기능을 capgo/capacitor-watch에서 사용하세요. for the native capability in Using @capgo/capacitor-watch, Capgo 플러그인 디렉토리에서 제품 워크플로우를 사용하세요. Capgo 플러그인들에 의해 __CAPGO_KEEP_1__ Capacitor 플러그인들에 의해 Capgo에서 구현 세부 정보를 사용하세요. for the implementation detail in Capacitor Plugins by Capgo, 플러그인 추가 또는 업데이트에서 구현 세부 정보를 사용하세요. Ionic Enterprise 플러그인 대체품 __CAPGO_KEEP_0__ Capgo 제품 워크플로우에 대한 Ionic Enterprise 플러그인 대체 제품입니다.