Mulai
Copy sebuah prompt pengaturan dengan langkah instalasi 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.
-
Siap untuk dipasang dan dapat dipaste
Jendela Terminal bun add @capgo/capacitor-watch -
Sinkronisasi dengan proyek asli
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() }});}Pengaturan iOS yang Diperlukan:
- Tambahkan kemampuan WatchConnectivity ke aplikasi iOS Anda di Xcode
- Buat aplikasi target watchOS di proyek Xcode Anda
- Implementasikan WatchConnectivity di aplikasi watchOS Anda (lihat Implementasi Aplikasi Jam Tangan di bawah)
Plugin ini secara otomatis mengaktifkan WCSession ketika plugin dimuat.
Apple Watch hanya didukung pada iOS. Pada Android, semua metode akan menolak dengan pesan kesalahan "Apple Watch hanya didukung pada iOS".
getInfo()mengembalikanisSupported: false. -
Tangani pesan yang memerlukan jawaban
// 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 }});}); -
Sinkronkan status 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 informasi pengguna secara 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);}); -
Monitor koneksi
// 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);});
Implementasi Aplikasi Jam Tangan
Judul Bagian “Implementasi Aplikasi Jam Tangan”Aplikasi jam tangan 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)") }}API Referensi
Judul Bagian “API Referensi”Metode
Judul Bagian “Metode”sendMessage(options: SendMessageOptions)
Judul Metode “sendMessage(options: SendMessageOptions)”Kirim pesan interaktif ke jam tangan. Memerlukan jam tangan untuk dapat dijangkau.
Parameter:
data: Objek - Data yang dikirim ke jam tangan
updateApplicationContext(options: UpdateContextOptions)
Bagian berjudul “updateApplicationContext(options: UpdateContextOptions)”Perbarui konteks aplikasi. Hanya nilai terbaru yang disimpan.
Parameter:
context: Objek - Data konteks aplikasi untuk disinkronkan
transferUserInfo(options: TransferUserInfoOptions)
Bagian berjudul “transferUserInfo(options: TransferUserInfoOptions)”Antar informasi pengguna untuk pengiriman yang dapat diandalkan.
Parameter:
userInfo: Objek - Informasi pengguna untuk ditransfer
replyToMessage(options: ReplyMessageOptions)
Bagian berjudul “replyToMessage(options: ReplyMessageOptions)”Balas pesan yang meminta tanggapan.
Parameter:
callbackId: string - ID panggilan balasan dari event messageReceivedWithReplydata: Object - Data balasan
getInfo()
Bagian berjudul “getInfo()”Dapatkan status koneksi jam tangan.
Kembali: WatchInfo objek dengan:
isSupported: boolean - Apakah WatchConnectivity tersediaisPaired: boolean - Apakah jam tangan terpasangisWatchAppInstalled: boolean - Apakah aplikasi jam tangan terinstalisReachable: boolean - Apakah jam tangan dapat dijangkauactivationStateNomor - Status Sesi (0/1/2)
getPluginVersion()
Bagian berjudul “getPluginVersion()”Dapatkan versi plugin native.
| Event | Deskripsi |
|---|---|
messageReceived | Pesan sederhana dari watch |
messageReceivedWithReply | Pesan yang menunggu jawaban (termasuk callbackId) |
applicationContextReceived | Pembaruan konteks dari watch |
userInfoReceived | Transfer informasi pengguna dari watch |
reachabilityChanged | Perubahan koneksi watch |
activationStateChanged | Status aktivasi sesi berubah |
Polanya Komunikasi
Bagian berjudul “Polanya Komunikasi”Pengiriman Langsung (sendMessage)
Bagian berjudul “Pengiriman Langsung (sendMessage)”- Memerlukan watch untuk dapat dijangkau
- Paling cocok untuk komunikasi interaktif dan sensitif terhadap waktu
- Gagal segera jika watch tidak tersedia
Konteks Aplikasi (updateApplicationContext)
Bagian berjudul “Konteks Aplikasi (updateApplicationContext)”- Nilai terbaru saja - nilai sebelumnya dihapus
- Paling cocok untuk sinkronisasi state aplikasi saat ini
- Diterima ketika jam tangan tersedia
Pindah Data Pengguna (transferUserInfo)
Bagian berjudul “Pindah Data Pengguna (transferUserInfo)”- Ditangguhkan dan diterima dalam urutan
- Paling cocok untuk data penting yang harus diterima
- Bekerja bahkan ketika jam tangan tidak tersedia sementara
Catatan Platform
Bagian berjudul “Catatan Platform”- Memerlukan iOS 15.0 atau lebih baru
- Menggunakan framework WatchConnectivity
- Aktivitas sesi secara otomatis diaktifkan pada saat plugin dimuat
- Mendukung pengiriman latar belakang untuk konteks dan informasi pengguna
Android
Bagian berjudul “Android”- Tidak didukung (Apple Watch hanya iOS)
- Semua metode menolak dengan kesalahan yang sesuai
getInfo()returnsisSupported: false
- Tidak didukung
- Semua metode menolak dengan kesalahan tidak tersedia
getInfo()returnsisSupported: false
Penggunaan Umum
Bagian berjudul “Penggunaan Umum”- Sinkronisasi Data: Pantau dan sinkronkan data ponsel
- Kontrol Jarak Jauh: Kontrol fitur ponsel dari jam tangan
- Pemberitahuan: Kirim pemberitahuan kustom ke jam tangan
- Data Kesehatan: Bagikan metrik kesehatan dan olahraga
- Kontrol Media: Kontrol pemutaran musik dari jam tangan
- Rumah Cerdas: Kontrol perangkat dari pergelangan tangan Anda
Pengaturan
Bagian berjudul “Pengaturan”Jam tangan tidak dapat dijangkau:
- Pastikan jam tangan berada dalam jangkauan Bluetooth
- Periksa bahwa kedua aplikasi berjalan
- Verifikasi WCSession diaktifkan di kedua sisi
Pesan tidak diterima:
- Periksa bahwa pendengar telah terdaftar sebelum mengirim
- Verifikasi aplikasi jam tangan menerapkan WCSessionDelegate
- Gunakan
transferUserInfountuk pengiriman yang dijamin
Sesi tidak aktif:
- Pastikan kemampuan WatchConnectivity ditambahkan di Xcode
- Periksa bahwa aplikasi jam memiliki ID bundle kompanion
- Verifikasi bahwa kedua aplikasi target versi OS yang kompatibel