1. Skenario, tujuan, dan batasan
Aplikasi kolaborasi berisi proyek, komentar, dan tugas. Pengguna dapat memanggil "selesaikan tugas", "bagikan proyek", atau "hapus komentar" melalui Siri, Spotlight, Shortcuts, atau Apple Intelligence. Setiap titik masuk harus mempertahankan otorisasi dan hasil yang sama, serta tugas harus dapat dilanjutkan di perangkat lain.
Tetapkan batasannya terlebih dahulu: App Intents adalah antarmuka yang dapat ditemukan (discoverable) untuk tindakan dan entitas. Antarmuka ini tidak boleh melewati otorisasi server, audit, atau transaksi yang sudah ada. Saran sistem memperluas jangkauan tetapi tidak membuat pemanggilan secara otomatis tepercaya; perlakukan setiap intent sebagai area panggilan publik (public call surface).
2. Nilai produk dari App Intents
Protokol AppIntent dari Apple membuat tindakan aplikasi dapat ditemukan oleh Siri, Spotlight, Shortcuts, dan Apple Intelligence. Pembaruan App Intents Juni 2026 juga menjelaskan skema aplikasi, identitas entitas lintas perangkat yang stabil melalui SyncableEntity, konfirmasi kepemilikan untuk tindakan sensitif atau destruktif melalui OwnershipProvidingEntity, dan IntentFile untuk menerima konten yang disediakan oleh aplikasi lain sebagai parameter.
Kemampuan ini menyelesaikan masalah penemuan dan interoperabilitas semantik. Kemampuan tersebut tidak menentukan otorisasi bisnis, penanganan konflik, atau kebijakan pembatalan (undo). Pisahkan "apa yang diinginkan pengguna", "apakah sistem dapat melakukannya dengan aman", dan "bagaimana pengguna memulihkan diri dari kegagalan".
3. Memodelkan tindakan dan entitas
Untuk setiap intent, tentukan input, visibilitas, prasyarat, hasil, dan efek samping. Nama tampilan mungkin berubah, tetapi ID bisnis harus stabil, dapat diverifikasi, dan terikat pada pengguna serta tenant saat ini. Jangan gunakan posisi daftar, judul, atau kunci basis data lokal sebagai identitas lintas perangkat.
struct CompleteTaskIntent: AppIntent {
static var title: LocalizedStringResource = "Complete task"
@Parameter(title: "Task")
var task: TaskEntity
func perform() async throws -> some IntentResult {
try await TaskService.complete(taskID: task.id)
return .result()
}
}Jika resolusi entitas gagal, izin berubah, atau versi tidak kompatibel, kembalikan pilihan yang mudah dipahami atau jalur masuk (sign-in). Jangan pernah menebak proyek yang serupa lalu mengeksekusinya.
4. Merancang identitas lintas perangkat yang stabil
Jika suatu tugas dapat dilanjutkan di beberapa perangkat, entitasnya harus mengekspos semantik identitas yang stabil, dan server harus menjamin bahwa ID entitas yang sama merujuk ke sumber daya yang sama di setiap perangkat. Lapisan sinkronisasi tetap menangani penghapusan, pengarsipan, perpindahan tenant, dan cache offline yang usang; proses resolusi memeriksa ulang apakah pengguna saat ini dapat mengakses sumber daya tersebut.
Jangan perlakukan SyncableEntity sebagai basis data sinkronisasi. Fitur ini menyatakan bahwa identitas dapat tetap stabil di berbagai perangkat; sinkronisasi data, resolusi konflik, dan pembatalan tetap menjadi tanggung jawab backend. Pertahankan pemetaan alias dan catatan audit selama penggabungan atau migrasi agar Shortcut lama tidak menargetkan entitas yang salah.
5. Mengonfirmasi tindakan sensitif dan kepemilikan
Menghapus, membagikan secara publik, atau mentransfer akses harus mengonfirmasi bahwa pengguna memiliki entitas tersebut atau memiliki izin operasi yang diperlukan. Gunakan OwnershipProvidingEntity untuk menyatakan kepemilikan dan buat konfirmasi tersebut menjelaskan objek, dampak, serta reversibilitasnya. Ikatkan konfirmasi ke permintaan, pengguna, dan versi sumber daya saat ini, alih-alih menggunakan kembali konfirmasi lama.
Untuk entitas milik tim atau publik, server harus mengembalikan keputusan kepemilikan; cache lokal tidaklah cukup. Batasi preferensi "jangan tanya lagi", serta pertahankan konfirmasi dan audit untuk tindakan berisiko tinggi.
6. Otorisasi, idempotensi, dan efek samping
Sistem dapat mencoba ulang suatu intent, dan Shortcut dapat dijalankan dua kali. Setiap intent yang mengubah status harus membawa kunci idempotensi dan versi sumber daya. Setelah otorisasi, server melakukan pembaruan bersyarat dan mengembalikan hasil bisnis yang sama untuk permintaan duplikat. Tindakan hanya-baca (read-only) bisa lebih cepat, tetapi tetap harus menegakkan visibilitas.
Jangan mengodekan izin dalam parameter bahasa alami. Lakukan otorisasi ulang dari sesi, tenant, kepemilikan entitas, dan versi saat ini, serta catat titik masuk (Siri, Spotlight, Shortcuts, atau aplikasi), perangkat pemanggil, dan hasilnya. Bedakan sesi login yang kedaluwarsa, akses yang dilarang, entitas yang berubah, dan kegagalan layanan sementara dalam respons.
7. Penemuan, observabilitas, dan pemulihan
Pilih skema aplikasi dan tindakan yang dapat ditemukan berdasarkan nilai bagi pengguna daripada mengekspos setiap API internal. Untuk setiap intent, ukur keberhasilan resolusi, penolakan otorisasi, pembatalan konfirmasi, eksekusi duplikat, pemulihan lintas perangkat, dan tingkat penyelesaian. Bandingkan titik masuk berdasarkan konversi, bukan hanya jumlah pemanggilan.
Tampilkan ringkasan sebelum eksekusi dan hasil beserta jalur pembatalan (undo) setelahnya. Pada gangguan jaringan, pertahankan status permintaan yang dapat dicoba ulang tetapi jangan pernah memutar ulang tindakan destruktif tanpa batas waktu di latar belakang. Jika entitas dihapus atau versinya berkonflik, kembalikan alternatif dan jalur penanganan manual oleh manusia sambil tetap mempertahankan peristiwa audit.
8. Rubrik dan pertanyaan lanjutan
Wajib dijelaskan
- Memperlakukan App Intents sebagai antarmuka produk publik yang tetap memerlukan otorisasi server, audit, idempotensi, dan pemeriksaan versi.
- Membedakan identitas entitas yang stabil dari sinkronisasi data aktual, termasuk penghapusan, migrasi, status offline, dan konflik.
- Merancang konfirmasi kepemilikan, preferensi lewati konfirmasi dengan cakupan sempit, pembatalan (undo), dan pemulihan kegagalan untuk tindakan sensitif.
Pertanyaan lanjutan
- Seorang pengguna mengonfirmasi penghapusan di ponsel, lalu Shortcut offline di tablet menjalankannya lagi. Bagaimana server menjamin satu hasil yang konsisten?
- Proyek tim bersama tidak memiliki pemilik tunggal. Siapa yang dapat mengonfirmasi transfer izin?
- Bagaimana Anda memutuskan bahwa suatu intent layak mendapatkan saran sistem alih-alih menambahkan tindakan yang bising dan bernilai rendah?
Panduan penilaian
Jawaban yang sangat baik menghubungkan penemuan, identitas, otorisasi, konfirmasi, idempotensi, dan pemulihan ke dalam satu rantai produk: titik masuk sistem mengekspresikan intent, server membuat keputusan akhir, dan pengguna dapat memahami dampaknya serta melanjutkan setelah kegagalan.