Panduan Memulai
Salin prompt setup yang berisi langkah install dan panduan markdown lengkap untuk plugin ini.
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.
Instalasi
Bagian berjudul “Instalasi”Anda bisa menggunakan AI-Assisted Setup kami untuk menginstal plugin ini. Tambahkan skill Capgo ke tool AI Anda dengan command berikut:
bunx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsLalu gunakan prompt berikut:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-watch` plugin in my project.Jika Anda lebih memilih Manual Setup, instal plugin dengan menjalankan perintah berikut dan ikuti petunjuk khusus platform di bawah ini:
-
Instal package
Jendela terminal bun add @capgo/capacitor-watch -
Sync dengan proyek native
Jendela terminal bunx cap sync -
Konfigurasi plugin
Contoh Penggunaan Dasar:
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);});Kirim Pesan ke Watch:
// Check if watch is reachable firstconst info = await CapgoWatch.getInfo();if (info.isReachable) {await CapgoWatch.sendMessage({data: { action: 'refresh', timestamp: Date.now() }});}Setup iOS yang Diperlukan:
- Tambahkan capability WatchConnectivity ke aplikasi iOS Anda di Xcode
- Buat target aplikasi watchOS di proyek Xcode Anda
- Implementasikan WatchConnectivity di aplikasi watchOS Anda (lihat Implementasi Watch App di bawah)
Plugin otomatis mengaktifkan WCSession saat plugin dimuat.
Setup Wear OS yang diperlukan:
- Tambahkan modul Wear OS ke proyek Android Anda (dengan
applicationIdpackage name dan signing yang sama dengan aplikasi ponsel). - Deklarasikan
capgo_watchcapability di modul wear (lihat Membuat aplikasi Wear OS). - Implementasikan listener Data Layer di watch menggunakan path plugin (
/capgo/message,/capgo/context, dan lainnya).
Plugin ponsel akan mendaftarkan listener Wearable API saat dimuat. Gunakan
getInfo()untuk mengecek node yang terhubung dan apakah aplikasi watch terdeteksi.Langkah lengkap: Membuat aplikasi Wear OS.
-
Tangani pesan yang butuh balasan
// 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 watch (include requestId for Wear OS correlation)await CapgoWatch.replyToMessage({callbackId: event.callbackId,data: {requestId: event.message.requestId,result,},});}); -
Sinkronisasi state aplikasi
// 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);}); -
Transfer info user dengan andal
// 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);}); -
Pantau konektivitas
// 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);});
Mulai cepat
Bagian berjudul “Mulai cepat”import { CapgoWatch } from '@capgo/capacitor-watch';
await CapgoWatch.sendMessage({ data: { action: 'refresh', timestamp: Date.now() }});Contoh: updateApplicationContext
Bagian berjudul “Example: updateApplicationContext”import { CapgoWatch } from '@capgo/capacitor-watch';
await CapgoWatch.updateApplicationContext({ context: { theme: 'dark', lastSync: Date.now() }});Contoh: transferUserInfo
Bagian berjudul “Example: transferUserInfo”import { CapgoWatch } from '@capgo/capacitor-watch';
await CapgoWatch.transferUserInfo({ userInfo: { recordId: '123', action: 'created' }});Kesalahan umum
Bagian berjudul “Kesalahan umum”- Listeners: hapus handle saat screen unmount.
- Sinkronisasi Native: jalankan
bunx cap syncsetelah upgrade plugin. - Sumber kebenaran tunggal: percayai
src/definitions.tsdi repo GitHub.
Implementasi Watch App
Bagian berjudul “Implementasi Watch App”Aplikasi watchOS Anda perlu mengimplementasikan WatchConnectivity. Berikut adalah contoh SwiftUI:
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)") }}Referensi API
Bagian berjudul “Referensi API”Metode
Bagian berjudul “Metode”sendMessage(options: SendMessageOptions)
Bagian berjudul “sendMessage(options: SendMessageOptions)”Kirim pesan interaktif ke watch. Watch harus dapat dijangkau.
Parameter:
data: Object - Data yang akan dikirim ke watch
updateApplicationContext(options: UpdateContextOptions)
Bagian berjudul “updateApplicationContext(options: UpdateContextOptions)”Perbarui context aplikasi. Hanya nilai terbaru yang disimpan.
Parameter:
context: Object - Data context yang akan disinkronkan
transferUserInfo(options: TransferUserInfoOptions)
Bagian berjudul “transferUserInfo(options: TransferUserInfoOptions)”Antrekan info user untuk pengiriman yang andal.
Parameter:
userInfo: Object - Info user yang akan ditransfer
replyToMessage(options: ReplyMessageOptions)
Bagian berjudul “replyToMessage(options: ReplyMessageOptions)”Balas pesan yang meminta respons.
Parameter:
callbackId: string - Callback ID dari event messageReceivedWithReplydata: Object - Data balasan
getInfo()
Bagian berjudul “getInfo()”Dapatkan status konektivitas watch.
Mengembalikan: WatchInfo object dengan:
isSupported: boolean - Apakah watch API tersedia di platform iniisPaired: boolean - Apple Watch dipasangkan (iOS) atau setidaknya satu node Wear OS terhubung (Android)isWatchAppInstalled: boolean - Aplikasi companion watch terinstal (iOS) ataucapgo_watchkapabilitas terdeteksi (Android)isReachable: boolean - Apakah watch dapat dijangkau untuk pengiriman pesan instanactivationState: number - Status sesi (iOS WCSession; Android 2 jika node terhubung, 0 jika tidak)
getPluginVersion()
Bagian berjudul “getPluginVersion()”Dapatkan versi plugin native.
| Event | Deskripsi |
|---|---|
messageReceived | Pesan sederhana dari watch |
messageReceivedWithReply | Pesan yang menunggu balasan (termasuk callbackId) |
applicationContextReceived | Update konteks dari watch |
userInfoReceived | Transfer info user dari watch |
reachabilityChanged | Konektivitas watch berubah (khusus iOS) |
activationStateChanged | Status aktivasi sesi berubah (khusus iOS) |
Communication Patterns
Bagian berjudul “Pola Komunikasi”Messaging Instan (sendMessage)
Bagian berjudul “Pesan Instan (sendMessage)”- Watch harus dapat dijangkau
- Terbaik untuk komunikasi interaktif yang sensitif waktu
- Gagal langsung jika watch tidak tersedia
Konteks Aplikasi (updateApplicationContext)
Bagian berjudul “Application Context (updateApplicationContext)”- Hanya nilai terbaru - nilai sebelumnya ditimpa
- Terbaik untuk menyinkronkan state aplikasi saat ini
- Dikirim saat watch kembali tersedia
Transfer Info Pengguna (transferUserInfo)
Bagian berjudul “User Info Transfer (transferUserInfo)”- Diantrekan dan dikirim sesuai urutan
- Terbaik untuk data penting yang wajib terkirim
- Tetap berfungsi meski watch sedang tidak terjangkau
Catatan Platform
Bagian berjudul “Platform Notes”Lihat tabel dukungan platform pada ringkasan plugin untuk matriks per metode.
iOS (Apple Watch)
Bagian berjudul “iOS (Apple Watch)”- Membutuhkan iOS 15.0 atau versi terbaru
- Menggunakan framework WatchConnectivity
- Session otomatis aktif saat plugin dimuat
- Mendukung background delivery untuk context dan user info
- Mengeluarkan
reachabilityChangeddanactivationStateChanged
Android (Wear OS)
Bagian berjudul “Android (Wear OS)”- Membutuhkan Google Play services dengan Wear OS Data Layer (
play-services-wearable, sudah termasuk dalam plugin) - APK Phone dan wear harus menggunakan sama
applicationIddan signing key - Aplikasi watch harus mengiklankan capability
capgo_watch - Apakah tidak emit
reachabilityChangedatauactivationStateChanged; pollgetInfo()saat dibutuhkan - Panduan setup: Membuat aplikasi Wear OS
- Watch messaging tidak didukung di browser
getInfo()selesai denganisSupported: falsedan field lainnya dengan default yang amangetPluginVersion()selesai dengan{ version: "web" }sendMessage,updateApplicationContext,transferUserInfo, danreplyToMessagetolak dengan error unavailableaddListenermenyelesaikan handle via CapacitorWebPlugin, tapi watch event tidak didukung di browser (callback tidak akan jalan)
Kasus Penggunaan Umum
Bagian berjudul “Kasus Penggunaan Umum”- Sinkronisasi Data: Jaga data watch dan ponsel tetap sinkron
- Kontrol Jarak Jauh: Kontrol fitur ponsel dari watch
- Notifikasi: Kirim notifikasi kustom ke watch
- Data Kesehatan: Bagikan metrik kesehatan dan kebugaran
- Kontrol Media: Kontrol pemutaran musik dari watch
- Smart Home: Kontrol perangkat dari pergelangan tangan
Pemecahan Masalah
Bagian berjudul “Troubleshooting”Watch tidak terjangkau:
- Pastikan watch berada dalam jangkauan Bluetooth
- Pastikan kedua aplikasi sedang berjalan
- Verifikasi WCSession sudah aktif di kedua sisi
Pesan tidak diterima:
- Pastikan listener sudah terdaftar sebelum mengirim
- Verifikasi watch app sudah mengimplementasikan WCSessionDelegate
- Gunakan
transferUserInfountuk pengiriman yang terjamin
Session tidak aktif:
- Pastikan capability WatchConnectivity sudah ditambahkan di Xcode
- Pastikan watch app memiliki companion bundle ID yang sesuai
- Verifikasi kedua app menargetkan versi OS yang kompatibel
Lanjutkan dari Getting Started
Bagian berjudul “Lanjutkan dari Getting Started”Jika Anda menggunakan Panduan Memulai untuk merencanakan pekerjaan plugin native, hubungkan dengan Menggunakan @capgo/capacitor-watch untuk fitur native di Menggunakan @capgo/capacitor-watch, Direktori Plugin Capgo untuk alur kerja produk di Direktori Plugin Capgo, Plugin Capacitor oleh Capgo untuk detail implementasi pada Capacitor Plugins oleh Capgo Menambahkan atau Memperbarui Plugin untuk detail implementasi di Menambahkan atau Memperbarui Plugin, dan Alternatif Plugin Ionic Enterprise untuk alur kerja produk dalam Alternatif Plugin Ionic Enterprise.