Lebih cepat ke konten

Mulai

GitHub

Anda dapat menggunakan Pengaturan Bantu AI kami untuk menginstal plugin. Tambahkan Capgo kemampuan ke alat AI Anda menggunakan perintah berikut:

Tampilan Jendela Terminal
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

Lalu 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 suka Manual Setup, instal plugin dengan menjalankan perintah-perintah berikut dan ikuti instruksi spesifik platform di bawah ini:

  1. Instal paket

    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 target aplikasi 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 Bagian “sendMessage(options: SendMessageOptions)”

Kirim pesan interaktif ke jam tangan. Memerlukan jam tangan untuk dapat diakses.

Parameter:

  • data: Objek - Data yang dikirim ke jam tangan

updateApplicationContext(options: UpdateContextOptions)

Judul Bagian “updateApplicationContext(options: UpdateContextOptions)”

Perbarui konteks aplikasi. Hanya nilai terbaru yang disimpan.

Parameter:

  • context: Objek - Data konteks yang disinkronkan

transferUserInfo(options: TransferUserInfoOptions)

Judul Bagian “transferUserInfo(options: TransferUserInfoOptions)”

Antar informasi pengguna untuk pengiriman yang dapat diandalkan.

Parameter:

  • userInfo: Objek - Informasi pengguna untuk ditransfer

replyToMessage(options: ReplyMessageOptions)

Bagian berjudul “balasPesan(options: BalasPesanOptions)”

Balas pesan yang meminta tanggapan.

Parameter:

  • callbackId: string - ID panggilan balik dari event messageReceivedWithReply
  • data: Objek - Data balasan

Dapatkan status koneksi watch.

Kembali: WatchInfo objek dengan:

  • isSupported: boolean - Apakah WatchConnectivity tersedia
  • isPairedApakah jam tangan sudah terpasang : boolean
  • isWatchAppInstalledApakah aplikasi jam tangan sudah terinstal : boolean
  • isReachableApakah jam tangan dapat diakses : boolean
  • activationStateStatus sesi (0/1/2) : number

Untuk mendapatkan versi plugin native.

AcaraDeskripsi
messageReceivedPesan sederhana dari jam tangan
messageReceivedWithReplyPesan yang menunggu balasan (termasuk callbackId)
applicationContextReceivedPengupdate Konteks dari watch
userInfoReceivedPengiriman Informasi Pengguna dari watch
reachabilityChangedKoneksi Watch Berubah
activationStateChangedStatus Aktivasi Sesi Berubah
  • Memerlukan watch untuk tersedia
  • Paling cocok untuk komunikasi interaktif dan sensitif waktu
  • Gagal segera jika watch tidak tersedia

Konteks Aplikasi (updateApplicationContext)

Konteks Aplikasi (updateApplicationContext)
  • Hanya nilai terbaru - nilai sebelumnya dihapus
  • Terbaik untuk sinkronisasi kondisi aplikasi saat ini
  • Diterima ketika jam tangan tersedia

Transfer Informasi Pengguna (transferUserInfo)

Konteks Pengiriman Informasi Pengguna (transferUserInfo)
  • Diproses dan diterima dalam urutan
  • Terbaik untuk data penting yang harus diterima
  • Kerja dengan baik bahkan ketika jam tangan tidak tersedia secara sementara

Catatan Platform

Konteks Catatan Platform
  • Memerlukan iOS 15.0 atau lebih baru
  • Menggunakan framework WatchConnectivity
  • Sesi secara otomatis diaktifkan pada saat plugin dimuat
  • Mendukung pengiriman latar belakang untuk konteks dan informasi pengguna
  • Tidak didukung (Apple Watch hanya dapat dijalankan di iOS)
  • Semua metode menolak dengan kesalahan yang sesuai
  • getInfo() mengembalikan isSupported: false
  • Not Tersedia
  • Tidak ada metode yang mendukung
  • getInfo() Tidak ada metode yang mendukung isSupported: false

Mengembalikan

Penggunaan Umum
  1. Bab berjudul “Penggunaan Umum”Sinkronisasi Data
  2. : Sinkronkan data jam tangan dan ponselPengendalian Jarak Jauh
  3. : Kendalikan fitur ponsel dari jam tanganPemberitahuan
  4. : Kirim pemberitahuan kustom ke jam tangan: Bagikan metrik kesehatan dan olahraga
  5. Media Kontrol: Kontrol pemutaran musik dari jam tangan
  6. Rumah Cerdas: Kontrol perangkat dari lengan Anda

Troubleshooting

  • : Bagikan metrik kesehatan dan olahraga
  • Jam Tangan Tidak Terhubung:
  • Pastikan jam tangan berada dalam jangkauan Bluetooth

Periksa apakah kedua aplikasi berjalan dengan baik

  • Pastikan pemangku jawab telah terdaftar sebelum mengirim
  • Verifikasi aplikasi jam tangan telah menerapkan WCSessionDelegate
  • Pilih transferUserInfo untuk pengiriman yang dijamin

Sesi tidak aktif:

  • Pastikan kemampuan WatchConnectivity telah ditambahkan di Xcode
  • Pastikan aplikasi jam tangan memiliki ID paket kompanen
  • Verifikasi kedua aplikasi targetkan versi OS yang kompatibel

Jika Anda menggunakan Getting Started untuk merencanakan pekerjaan plugin native, hubungkannya dengan Menggunakan @capgo/capacitor-watch untuk kemampuan native di Menggunakan @capgo/capacitor-watch, __Direktori Plugin__ Capgo untuk alur kerja produk di __Direktori Plugin__ Capgo, __Plugin-Plugin__ Capacitor oleh Capgo untuk detail implementasi di __Plugin-Plugin__ Capacitor oleh Capgo, Menambahkan atau Mengupdate Plugin untuk detail implementasi di Menambahkan atau Mengupdate Plugin, dan Alternatif Plugin Enterprise Ionic untuk alur kerja produk di Alternatif Plugin Enterprise Ionic.