Lompat ke konten

Mulai

  1. Siap untuk dipasang dan dapat dipaste

    Jendela Terminal
    bun add @capgo/capacitor-watch
  2. Sinkronisasi dengan proyek asli

    Jendela Terminal
    bunx cap sync
  3. Konfigurasi plugin

    Contoh Penggunaan Dasar:

    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);
    });

    Kirim Pesan ke Watch:

    // Check if watch is reachable first
    const info = await CapgoWatch.getInfo();
    if (info.isReachable) {
    await CapgoWatch.sendMessage({
    data: { action: 'refresh', timestamp: Date.now() }
    });
    }

    Pengaturan iOS yang Diperlukan:

    1. Tambahkan kemampuan WatchConnectivity ke aplikasi iOS Anda di Xcode
    2. Buat aplikasi target watchOS di proyek Xcode Anda
    3. Implementasikan WatchConnectivity di aplikasi watchOS Anda (lihat Implementasi Aplikasi Jam Tangan di bawah)

    Plugin ini secara otomatis mengaktifkan WCSession ketika plugin dimuat.

  4. Tangani pesan yang memerlukan jawaban

    // 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. 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 watch
    await CapgoWatch.addListener('applicationContextReceived', (event) => {
    console.log('Context from watch:', event.context);
    });
  6. 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 transfers
    await CapgoWatch.addListener('userInfoReceived', (event) => {
    console.log('User info from watch:', event.userInfo);
    });
  7. Monitor koneksi

    // 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);
    });

Aplikasi jam tangan Anda perlu mengimplementasikan WatchConnectivity. Berikut adalah contoh 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)")
}
}

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 messageReceivedWithReply
  • data: Object - Data balasan

Dapatkan status koneksi jam tangan.

Kembali: WatchInfo objek dengan:

  • isSupported: boolean - Apakah WatchConnectivity tersedia
  • isPaired: boolean - Apakah jam tangan terpasang
  • isWatchAppInstalled: boolean - Apakah aplikasi jam tangan terinstal
  • isReachable: boolean - Apakah jam tangan dapat dijangkau
  • activationStateNomor - Status Sesi (0/1/2)

Dapatkan versi plugin native.

EventDeskripsi
messageReceivedPesan sederhana dari watch
messageReceivedWithReplyPesan yang menunggu jawaban (termasuk callbackId)
applicationContextReceivedPembaruan konteks dari watch
userInfoReceivedTransfer informasi pengguna dari watch
reachabilityChangedPerubahan koneksi watch
activationStateChangedStatus aktivasi sesi berubah
  • Memerlukan watch untuk dapat dijangkau
  • Paling cocok untuk komunikasi interaktif dan sensitif terhadap waktu
  • Gagal segera jika watch tidak tersedia
  • Nilai terbaru saja - nilai sebelumnya dihapus
  • Paling cocok untuk sinkronisasi state aplikasi saat ini
  • Diterima ketika jam tangan tersedia
  • Ditangguhkan dan diterima dalam urutan
  • Paling cocok untuk data penting yang harus diterima
  • Bekerja bahkan ketika jam tangan tidak tersedia sementara
  • 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
  • Tidak didukung (Apple Watch hanya iOS)
  • Semua metode menolak dengan kesalahan yang sesuai
  • getInfo() returns isSupported: false
  • Tidak didukung
  • Semua metode menolak dengan kesalahan tidak tersedia
  • getInfo() returns isSupported: false
  1. Sinkronisasi Data: Pantau dan sinkronkan data ponsel
  2. Kontrol Jarak Jauh: Kontrol fitur ponsel dari jam tangan
  3. Pemberitahuan: Kirim pemberitahuan kustom ke jam tangan
  4. Data Kesehatan: Bagikan metrik kesehatan dan olahraga
  5. Kontrol Media: Kontrol pemutaran musik dari jam tangan
  6. Rumah Cerdas: Kontrol perangkat dari pergelangan tangan Anda

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 transferUserInfo untuk 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