Membuat Aplikasi watchOS
Copy prompt pengaturan dengan langkah instalasi dan panduan markdown lengkap untuk plugin ini.
This guide walks you through creating a Untuk Aplikasi kompas dari awal, termasuk pengaturan proyek di Xcode, mengintegrasikan CapgoWatchSDK, dan membuat aplikasi jam yang berfungsi dengan SwiftUI.
, gunakan Wear OSsebaliknya. Membuat Aplikasi Wear OS Persyaratan
Persyaratan
Judul Bagian: “Persyaratan”Sebelum Anda memulai, pastikan Anda memiliki:
- Xcode 15 atau lebih baru (download dari Mac App Store)
- macOS Sonoma atau lebih baru (untuk watchOS terbaru SDK)
- An existing Capacitor iOS project (jalankan)
npx cap add ios(jika Anda belum) - Akun Pengembang Apple (akun gratis bekerja untuk pengembangan)
Ringkasan Struktur Proyek
Section titled “Project Structure Overview”Setelah menyelesaikan panduan ini, proyek Anda akan memiliki struktur sebagai berikut:
Direktoriios/
DirektoriAplikasi/
DirektoriAplikasi/ (Aplikasi iOS utama Anda)
- …
- Aplikasi.xcodeproj
- Aplikasi.xcworkspace (Gunakan ini untuk membuka proyek)
- File Pod
DirektoriMyWatch/ (Aplikasi Jam Tangan Baru)
DirektoriMyWatch/ (Sumber Aplikasi Jam Tangan)
- MyWatchApp.swift
- Tampilan Konten.swift
DirektoriAssets.xcassets/
- …
- MyWatch.xcodeproj
Langkah 1: Buka Projek iOS Anda di Xcode
Judul Bagian: Langkah 1: Buka Projek iOS Anda di Xcode- Navigasikan ke folder projek Capacitor Anda
ios/AppFolder - Buka
App.xcworkspaceTidak.xcodeproj) dengan mengklik ganda - Tunggu Xcode untuk mengindeks projek
Langkah 2: Tambahkan Target watchOS
Bagian berjudul “Langkah 2: Tambahkan Target watchOS”-
Judul bagian "Langkah 2: Tambahkan Target watchOS" Di Xcode, pergi ke
-
File → Baru → Target…
- Select Pilih tab watchOS di atas
- Pilih App
- Klik Selanjutnya
-
Konfigurasi aplikasi jam Anda:
- Nama Produk:
MyWatch(atau nama yang Anda inginkan) - TimSelect tim pengembang Apple Anda
- Identifikasi Organisasi: Harus sesuai dengan aplikasi iOS Anda (misalnya,
app.capgo) - Identifikasi Paket: Akan dihasilkan secara otomatis (misalnya,
app.capgo.myapp.watchkitapp) - Bahasa: Swift
- Antarmuka Pengguna: SwiftUI
- Jenis Aplikasi Jam TanganAplikasi Baru (bukan Aplikasi iOS yang Sudah Ada)
- Hapus Pilihan Termasuk Scene Peringatan (kecuali Anda membutuhkannya)
- Hapus Pilihan Termasuk Komplikasi (kecuali Anda membutuhkannya)
- Nama Produk:
-
Klik Selesai
-
When diminta ‘Aktifkan skema ‘MyWatch’?’, klik Aktifkan
Langkah 3: Konfigurasi Pengaturan Aplikasi Jam Tangan
Bagian berjudul ‘Langkah 3: Konfigurasi Pengaturan Aplikasi Jam Tangan’-
Pada Navigator Proyek (sisi kiri), pilih proyek Anda (ikon biru di atas)
-
Pilih target jam tangan Anda (misalnya, ‘MyWatch’) dari daftar target
-
Pergi ke Umum tab:
- Nama Tampilan: Nama yang ditampilkan di bawah ikon aplikasi (misalnya, ‘Aplikasi Saya’)
- Identifier PaketSeharusnya berakhir dengan
.watchkitapp - Versi: Sesuaikan dengan versi aplikasi iOS Anda
- BuildMatchkan nomor build aplikasi iOS Anda
-
Pergi ke Tanda Tangan & Kemampuan tab:
- Enable Atur Otomatis Tanda Tangan
- Pilih aplikasi Ke
- Xcode akan membuat profil pengaturan secara otomatis
-
Set Informasi Pengembangan:
- Info PengembanganDeploymen Minimum
Langkah 4: Tambahkan CapgoWatchSDK melalui Swift Package Manager
Langkah 4: Tambahkan CapgoWatchSDK melalui Swift Package ManagerSDK Capgo Watch menyediakan sebuah aplikasi siap digunakan WatchConnector CapgoWatchSDK menyediakan kelas yang siap digunakan
-
Untuk berkomunikasi dengan pengguna. Tambahkan Dependensi Paket...
-
File → Tambahkan Paket Ketergantungan…
https://github.com/Cap-go/capacitor-watch.git -
Tunggu Xcode mengambil paket selama menekan Enter
-
Konfigurasi paket:
- Aturan Ketergantungan: “Hingga Versi Utama Berikutnya” dengan “8.0.0”
- Klik Tambahkan Paket
-
Pilih produk mana yang ingin ditambahkan:
- PENTING: Pilih hanya
CapgoWatchSDK - Pastikan sudah ditambahkan ke target Anda target Watch Contoh (misalnya “MyWatch”), bukan aplikasi iOS
- Klik Tambah Paket
- PENTING: Pilih hanya
Langkah 5: Implementasi Aplikasi Jam Tangan
Judul bagian ‘Langkah 5: Implementasi Aplikasi Jam Tangan’Sekarang mari kita buat aplikasi jam tangan code. Ganti file yang dihasilkan secara otomatis dengan berikut:
5.1 Buat Poin Masuk Aplikasi
Bagian berjudul “5.1 Buat Poin Masuk Aplikasi”Edit MyWatch/MyWatchApp.swift:
import SwiftUIimport CapgoWatchSDK
@mainstruct MyWatchApp: App { init() { // Activate WatchConnectivity when app launches WatchConnector.shared.activate() }
var body: some Scene { WindowGroup { ContentView() } }}Membuat Tampilan Utama
Bagian berjudul “5.2 Buat Tampilan Utama”Edit MyWatch/ContentView.swift:
import SwiftUIimport CapgoWatchSDK
struct ContentView: View { // Observe the WatchConnector for automatic UI updates @ObservedObject var connector = WatchConnector.shared
// Local state @State private var messageText = "" @State private var statusMessage = "Ready"
var body: some View { ScrollView { VStack(spacing: 16) { // Connection Status ConnectionStatusView(connector: connector)
Divider()
// Message Input TextField("Message", text: $messageText) .textFieldStyle(.roundedBorder)
// Send Buttons HStack { Button("Send") { sendMessage() } .disabled(!connector.isReachable || messageText.isEmpty)
Button("Request") { sendWithReply() } .disabled(!connector.isReachable || messageText.isEmpty) }
Divider()
// Status Text(statusMessage) .font(.caption) .foregroundColor(.secondary)
// Last Received Message if !connector.lastMessage.isEmpty { VStack(alignment: .leading) { Text("Last Message:") .font(.caption) .foregroundColor(.secondary) Text(formatMessage(connector.lastMessage)) .font(.caption2) } .frame(maxWidth: .infinity, alignment: .leading) } } .padding() } }
private func sendMessage() { connector.sendMessage(["text": messageText, "timestamp": Date().timeIntervalSince1970]) statusMessage = "Message sent" messageText = "" }
private func sendWithReply() { connector.sendMessage(["text": messageText, "needsReply": true]) { reply in DispatchQueue.main.async { statusMessage = "Reply: \(formatMessage(reply))" } } messageText = "" }
private func formatMessage(_ message: [String: Any]) -> String { message.map { "\($0.key): \($0.value)" }.joined(separator: ", ") }}
// Separate view for connection statusstruct ConnectionStatusView: View { @ObservedObject var connector: WatchConnector
var body: some View { HStack { Circle() .fill(connector.isReachable ? Color.green : Color.red) .frame(width: 12, height: 12)
Text(connector.isReachable ? "Connected" : "Disconnected") .font(.headline)
Spacer()
if connector.isActivated { Image(systemName: "checkmark.circle.fill") .foregroundColor(.green) } } }}
#Preview { ContentView()}Langkah 6: Konfigurasi Aplikasi iOS untuk WatchConnectivity
Langkah 6: Konfigurasi Aplikasi iOS untuk WatchConnectivityMembuat Poin Masuk Aplikasi juga memerlukan kemampuan WatchConnectivity.
-
Pilih proyek Anda di Navigator Proyek
-
Pilih Target iOS App (bukan target jam tangan)
-
Pergi ke Tab Tanda Tangan & Kemampuan Klik
-
Click Cari dan tambahkan
-
WatchConnectivity WatchConnectivity Jika tersedia atau mungkin ditambahkan secara otomatis
-
Plugin Capacitor menghandle sisi iOS secara otomatis, namun pastikan file Info.plist Anda memiliki:
<key>WKCompanionAppBundleIdentifier</key><string>app.capgo.myapp.watchkitapp</string>
Langkah 7: Bangun dan Jalankan
Judul Bagian “Langkah 7: Bangun dan Jalankan”Jalankan pada Simulator
Bagian Judul “Jalankan pada Simulator”-
Pilih skema jam tangan Anda dari selector skema (atas jendela Xcode)
-
Pilih simulator jam tangan Apple:
- Pilih simulator Apple Watch (misalnya, “Apple Watch Series 9 (45mm)”)
- Pilih simulator Apple Watch (misalnya, “Apple Watch Series 9 (45mm)”)
-
Klik tombol Run Klik tombol (▶️) atau tekan
Cmd + R -
Simulator iOS akan diluncurkan dengan baik iPhone dan Apple Watch
Jalankan pada Perangkat Fisik
Judul Bagian “Jalankan pada Perangkat Fisik”-
Hubungkan iPhone Anda melalui USB
-
Pastikan Apple Watch Anda terpasang dengan iPhone tersebut
-
Pilih skema jam tangan Anda
-
Pilih Apple Watch fisik Anda dari daftar perangkat
-
Klik Jalankan
-
Pertama kali: Anda mungkin perlu memercayai komputer di kedua perangkat
Langkah 8: Tes Komunikasi
Judul bagian ‘Langkah 8: Tes Komunikasi’Dari iPhone (Capacitor) ke Jam Tangan
Judul bagian ‘Dari iPhone (Capacitor) ke Jam Tangan’Dalam aplikasi Capacitor Anda:
import { CapgoWatch } from '@capgo/capacitor-watch';
// Check connectionconst info = await CapgoWatch.getInfo();console.log('Watch reachable:', info.isReachable);
// Send a messageif (info.isReachable) { await CapgoWatch.sendMessage({ data: { action: 'update', value: 'Hello from iPhone!' } });}Dari Jam Tangan ke iPhone
Judul bagian ‘Dari Jam Tangan ke iPhone’Aplikasi jam tangan menggunakan WatchConnector:
// Send message (fire and forget)WatchConnector.shared.sendMessage(["action": "buttonTapped"])
// Send message with replyWatchConnector.shared.sendMessage(["request": "getData"]) { reply in print("Got reply: \(reply)")}Menangani Pesan di iPhone
Judul Bagian “Menangani Pesan di iPhone”// Listen for messages from watchawait CapgoWatch.addListener('messageReceived', (event) => { console.log('Message from watch:', event.message); // { action: 'buttonTapped' }});
// Handle messages that need a replyawait CapgoWatch.addListener('messageReceivedWithReply', async (event) => { console.log('Request from watch:', event.message);
// Send reply back await CapgoWatch.replyToMessage({ callbackId: event.callbackId, data: { status: 'success', items: ['item1', 'item2'] } });});Advanced: Custom Delegate for More Control
Judul Bagian “Menggunakan: Pemangku Wewenang Kustom untuk Kontrol Lebih Lanjut”If you need more control, implement WatchConnectorDelegate:
import SwiftUIimport CapgoWatchSDK
class WatchHandler: WatchConnectorDelegate { func didReceiveMessage(_ message: [String: Any]) { print("Received: \(message)") // Handle incoming message }
func didReceiveMessageWithReply(_ message: [String: Any], replyHandler: @escaping ([String: Any]) -> Void) { print("Received request: \(message)") // Process and send reply replyHandler(["status": "processed"]) }
func didReceiveApplicationContext(_ context: [String: Any]) { print("Context updated: \(context)") }
func didReceiveUserInfo(_ userInfo: [String: Any]) { print("User info received: \(userInfo)") }
func reachabilityDidChange(_ isReachable: Bool) { print("Reachability changed: \(isReachable)") }
func activationDidComplete(with state: WCSessionActivationState) { print("Activation completed: \(state.rawValue)") }}
// In your app setup:let handler = WatchHandler()WatchConnector.shared.delegate = handlerWatchConnector.shared.activate()Troubleshooting
Bagian berjudul “Pengaturan Masalah”Applikasi Jam Tangan Tidak Muncul di Jam Tangan
Judul Bagian “Applikasi Jam Tangan Tidak Muncul di Jam Tangan”- Pastikan ID Paket yang Benar (ID Paket Jam Tangan harus sama dengan ID Paket iOS +
.watchkitapp) - Pastikan kedua aplikasi telah ditandatangani oleh tim yang sama
- Pada perangkat fisik: Buka aplikasi Watch di iPhone → My Watch → gulir ke bawah untuk menemukan aplikasi Anda → aktifkan ON
Pesan Tidak Diterima
Bab berjudul “Pesan Tidak Diterima”- Pastikan kedua aplikasi telah mengaktifkan WCSession
- Cek
isReachablesebelum mengirim pesan - Untuk pengiriman yang dijamin, gunakan
transferUserInfosebaliknyasendMessage - Pastikan pendengar telah terdaftar sebelum perangkat lain mengirim pesan
“Error Aktivasi Sesinya Tidak Berhasil”
Bab berjudul ““Error Aktivasi Sesinya Tidak Berhasil””- Hubungi
WatchConnector.shared.activate()di awal siklus aplikasi - Pada iOS, plugin diaktifkan secara otomatis - pastikan plugin diimpor
- Pastikan kemampuan WatchConnectivity ditambahkan ke target iOS
Masalah Pembangunan dengan CapgoWatchSDK
Bagian berjudul “Masalah Pembangunan dengan CapgoWatchSDK”- Pastikan paket ditambahkan ke target jambukan target iOS
- Membersihkan folder pembangunan: Produk → Membersihkan Folder Pembangunan (Tombol Ctrl + Shift + K)
- Reset katalog paket: File → Paket → Reset Katalog Paket
Masalah Simulator
Judul Bagian “Masalah Simulator”- Reset simulator: Gawai → Hapus Semua Konten dan Pengaturan
- Pastikan simulator iOS dan watchOS kompatibel
- Kedua simulator harus berjalan untuk komunikasi berfungsi
Next Steps
Judul Bagian “Langkah Selanjutnya”- Membuat Aplikasi Wear OS untuk jam tangan Android
- Referensi API - Dokumentasi lengkap API
- Polanya Komunikasi - Kapan menggunakan metode masing-masing
- Aplikasi Contoh - Contoh aplikasi yang berfungsi sepenuhnya
Lanjutkan dari Membuat Aplikasi watchOS
- Judul bagian ‘Lanjutkan dari Membuat Aplikasi watchOS’Jika Anda menggunakan Membuat Aplikasi watchOS untuk merencanakan kerja plugin native, hubungkannya dengan Menggunakan @capgo/capacitor-watch untuk kemampuan asli dalam Menggunakan @capgo/capacitor-watch, Capgo Direktori Plugin untuk alur kerja produk dalam Capgo Direktori Plugin, Capacitor Plugin oleh Capgo untuk detail implementasi dalam Capacitor Plugin oleh Capgo Menambahkan atau Mengupdate Plugin untuk detail implementasi dalam Menambahkan atau Mengupdate Plugin, dan Alternatif Plugin Enterprise Ionic untuk alur kerja produk dalam Alternatif Plugin Enterprise Ionic.