Lebih lanjut ke konten

Mulai Menggunakan

GitHub

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

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

  1. Install the package

    Jendela terminal
    bun add @capgo/capacitor-watch
  2. Sinkron dengan proyek native

    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. Buatlah 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. Pengaturan aplikasi yang sinkron

    // 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 pengaturan 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. Pantau 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 harus 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 dijangkau.

Parameter:

  • dataObjek - Data yang dikirim ke jam tangan

updateApplicationContext(options: UpdateContextOptions)

Judul Bagian: “updateApplicationContext(options: UpdateContextOptions)”

Update konteks aplikasi. Hanya nilai terbaru yang disimpan.

Parameter:

  • contextObjek - Data konteks untuk sinkronisasi

transferUserInfo(options: TransferUserInfoOptions)

Judul Bagian: “transferUserInfo(options: TransferUserInfoOptions)”

Antar informasi pengguna secara andal.

Parameter:

  • userInfoObjek - Informasi pengguna untuk ditransfer

replyToMessage(options: ReplyMessageOptions)

Judul Bagian: “replyToMessage(options: ReplyMessageOptions)”

Balas pesan yang meminta respons.

Parameter:

  • callbackId: string - ID panggil balik dari event messageReceivedWithReply
  • data: Object - Data balasan

Mendapatkan status koneksi jam tangan.

Mengembalikan: 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
  • activationState: number - Status sesi (0/1/2)

Dapatkan versi plugin native.

EventDeskripsi
messageReceivedPesan sederhana dari watch
messageReceivedWithReplyPesan yang menunggu jawaban (termasuk callbackId)
applicationContextReceivedPerbarui konteks dari watch
userInfoReceivedTransfer informasi pengguna dari watch
reachabilityChangedKoneksi watch berubah
activationStateChangedStatus aktivasi sesi berubah

Komunikasi Langsung (sendMessage)

Patokan Komunikasi Langsung (sendMessage)
  • Diperlukan agar jam tangan dapat dijangkau
  • Terbaik untuk komunikasi interaktif dan sensitif terhadap waktu
  • Gagal secara langsung jika jam tangan tidak tersedia

Konteks Aplikasi (updateApplicationContext)

Patokan Konteks Aplikasi (updateApplicationContext)
  • Hanya nilai terbaru - nilai sebelumnya dihapus
  • Terbaik untuk sinkronisasi status aplikasi saat ini
  • Terdeliver ketika jam tangan tersedia
  • Terjadwal dan Dikirim dalam Urutan
  • Paling Baik untuk Data Penting yang Harus Dikirim
  • Kerja Baik Bahkan Ketika Jam Tangan Sementara Tidak Terhubung
  • Memerlukan iOS 15.0 atau Versi Lebih Baru
  • Menggunakan Framework WatchConnectivity
  • Sesi Otomatis Aktif pada Muat Plugin
  • Mendukung Pengiriman Latar Belakang untuk Konteks dan Informasi Pengguna
  • Tidak didukung (Apple Watch hanya iOS)
  • Semua metode menolak dengan kesalahan yang sesuai
  • getInfo() mengembalikan isSupported: false
  • Tidak didukung
  • Semua metode menolak dengan kesalahan tidak tersedia
  • getInfo() mengembalikan isSupported: false
  1. Sinkronisasi DataSinkronisasi data watch dan ponsel
  2. Kontrol Jarak JauhKontrol fitur ponsel dari watch
  3. PemberitahuanKirim pemberitahuan kustom ke watch
  4. Data KesehatanBagikan metrik kesehatan dan olahraga
  5. Kontrol MediaKontrol pemutaran musik dari watch
  6. Rumah CerdasKontrol perangkat dari lengan

Jam Tangan Tidak Terjangkau:

  • Pastikan jam tangan berada dalam jangkauan Bluetooth
  • Pastikan kedua aplikasi berjalan
  • Pastikan WCSession diaktifkan pada kedua sisi

Pesan Tidak Diterima:

  • Pastikan pendengar terdaftar sebelum mengirim
  • Pastikan aplikasi jam tangan menerapkan WCSessionDelegate
  • Pakai transferUserInfo untuk pengiriman yang dijamin

WCSession Tidak Aktif:

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

Jika Anda menggunakan Mulai Menggunakan untuk merencanakan kerja plugin native, hubungkannya dengan Menggunakan @capgo/capacitor-watch untuk kemampuan native di Menggunakan @capgo/capacitor-watch, Capgo Direktori Plugin untuk alur kerja produk di Capgo Direktori Plugin, Capacitor Plugin oleh Capgo untuk detail implementasi di Capacitor Plugin 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.