AppIntent: apa itu, model intent Siri dan Swift

Penulis: IT Sectr Diterbitkan: 2026-06-16 Waktu membaca: 8 mnt

AppIntent — framework Apple, diperkenalkan di iOS 16 sebagai pengganti Intents framework yang usang, menyediakan API deklaratif untuk integrasi aplikasi dengan Siri, Shortcuts, dan Spotlight. Tidak seperti pendekatan lama yang memerlukan file Intent Definition File terpisah dan pembuatan kode ObjC, AppIntent menggunakan Swift murni dengan protokol AppIntent dan AppEnum. Menurut Apple Developer Documentation, 2026, AppIntent mengurangi jumlah kode untuk membuat satu intent rata-rata 60% dibandingkan dengan Intents framework, dan waktu integrasi perintah Siri berkurang dari beberapa hari menjadi beberapa jam.

Poin Utama

  • AppIntent — framework deklaratif Apple untuk membuat intent Siri, Shortcuts, dan Spotlight mulai iOS 16.
  • Protokol AppIntent — blok bangunan utama: nama, deskripsi, parameter, dan metode perform() menentukan logika perintah.
  • AppEntity — protokol untuk mendeskripsikan entitas yang digunakan intent: proyek, tugas, kontak, file.
  • AppEnum — enumerasi deklaratif parameter, yang secara otomatis menghasilkan UI untuk pemilihan di Shortcuts.
  • Asinkronisitas — intent mendukung async/await, bilah kemajuan, dan IntentDialog untuk dialog dengan pengguna.

Apa itu AppIntent dan untuk apa?

AppIntent — framework Apple untuk mendeskripsikan secara deklaratif perintah yang dapat dijalankan aplikasi Anda atas permintaan Siri, Shortcuts, Spotlight, Control Center, dan Action Button. Di dasarnya terdapat protokol AppIntent, di mana pengembang mendeskripsikan nama intent, parameternya, dan metode perform() — logika yang dijalankan. Framework secara otomatis menghasilkan antarmuka pengguna untuk mengonfigurasi parameter di aplikasi Shortcuts dan frasa suara untuk Siri.

Sebelum munculnya AppIntent, pengembang menggunakan Intents framework — sistem berbasis file Intent Definition File, yang menghasilkan kode Objective-C dan memerlukan konfigurasi Intents Extension terpisah. Proses ini rumit: bahkan intent sederhana memerlukan hingga 5 file konfigurasi. AppIntent menghilangkan kompleksitas ini — intent dideskripsikan dalam satu file Swift, dan sistem secara otomatis menghasilkan semua yang diperlukan untuk integrasi dengan Siri dan Shortcuts.

Menurut WWDC 2024 Session “Dive deeper into App Intents”, Apple melihat AppIntent sebagai mekanisme sentral untuk memperluas fungsionalitas aplikasi di luar UI tradisional. Pada saat rilis iOS 18, lebih dari 70% aplikasi di top 100 App Store telah menggunakan AppIntent untuk integrasi dengan Shortcuts dan Siri, dan pengguna rata-rata iOS 18 menjalankan 4–6 intent per hari melalui perintah suara atau widget.

Di mana AppIntent digunakan

  • Siri — perintah suara: “Hey Siri, tambahkan tugas ke MyApp”
  • Shortcuts — otomatisasi di aplikasi Pintasan dengan konfigurasi parameter
  • Spotlight — pencarian dan eksekusi perintah langsung dari bilah pencarian
  • Control Center — tombol aksi cepat di iOS 18+
  • Action Button — konfigurasi aksi untuk tombol iPhone 15 Pro dan yang lebih baru

AppIntent vs Intents framework: perbedaan utama

Intents framework (iOS 10–15) memerlukan pembuatan file .intentdefinition, pembuatan kelas ObjC/Swift melalui Xcode, konfigurasi Intents Extension dan App Intent Configuration. AppIntent (iOS 16+) sepenuhnya menggantikan pipeline ini dengan kode Swift murni tanpa pembuatan, ekstensi, dan konfigurasi tambahan. Ini membuat proses pembuatan intent dapat diakses oleh pengembang iOS biasa tanpa mempelajari SiriKit.

Keunggulan utama AppIntent adalah deklaratifitas. Pengembang mendeskripsikan apa yang dilakukan intent, bukan bagaimana ia berintegrasi dengan sistem. Framework sendiri menangani skenario dialog Siri, menampilkan parameter di Shortcuts, dan mentransfer konteks antar intent. Di Intents framework lama, setiap aspek integrasi harus dikodekan secara manual, termasuk INUIHostedView untuk menampilkan UI intent.

Perbandingan pendekatan

KarakteristikIntents frameworkAppIntent
Jumlah kode100–300 baris per intent30–60 baris
File yang diperlukan.intentdefinition, Extension, Config1 file Swift
Pembuatan kodeWajib (Xcode -> ObjC)Tidak diperlukan
AsinkronisitasHanya completion handlerasync/await + kemajuan
IntentDialogTidakDialog Siri bawaan

Protokol utama: AppIntent, AppEntity, AppEnum

AppIntent — protokol sentral yang mendefinisikan intent. Ini berisi title (nama untuk Siri), description (deskripsi di Shortcuts), parameter (melalui @Parameter) dan metode perform() yang mengembalikan IntentResult. Hasilnya bisa berupa IntentDialog (dialog dengan Siri), nilai untuk dikembalikan ke Shortcuts, atau kesalahan. Setiap intent juga dapat menyediakan suggestedInvocationPhrase — frasa untuk panggilan suara.

AppEntity mendeskripsikan entitas yang digunakan intent. Misalnya, jika aplikasi mengelola proyek, AppEntity Project berisi id, displayRepresentation (bagaimana menampilkan entitas di UI) dan defaultQuery (bagaimana mencari entitas). AppEnum — enumerasi untuk parameter pilihan yang secara otomatis menghasilkan UI dengan elemen picker di Shortcuts. Alih-alih membuat daftar parameter secara manual, cukup mendeklarasikan enum yang sesuai dengan AppEnum.

Contoh AppEnum dan parameter

swift
enum TaskPriority: String, AppEnum {
    case low, medium, high
    
    static var typeDisplayRepresentation: TypeDisplayRepresentation =
        "Priority"
    
    var displayRepresentation: DisplayRepresentation {
        switch self {
        case .low: "Low"
        case .medium: "Medium"
        case .high: "High"
        }
    }
}

struct CreateTaskIntent: AppIntent {
    static var title: LocalizedStringResource = "Create Task"
    
    @Parameter(title: "Task Name")
    var taskName: String
    
    @Parameter(title: "Priority")
    var priority: TaskPriority
    
    func perform() async throws -> some IntentResult {
        try await TaskManager.shared
            .createTask(name: taskName, priority: priority)
        return .result(dialog: "Task created")
    }
}

Parameter intent dan validasinya

Parameter AppIntent dideklarasikan melalui property wrapper @Parameter, yang secara otomatis berintegrasi dengan UI Shortcuts dan permintaan suara Siri. Setiap parameter memiliki title (ditampilkan di Shortcuts) dan dapat berisi deskripsi, nilai default, batasan. AppIntent mendukung tipe standar: String, Int, Double, Bool, serta tipe kustom melalui AppEntity dan AppEnum.

Validasi parameter dilakukan dalam metode perform() sebelum menjalankan logika. Jika parameter tidak valid, intent mengembalikan kesalahan melalui IntentError. Untuk validasi kompleks, dapat diimplementasikan metode validate(), yang dipanggil sebelum perform() dan dapat memberikan umpan balik kepada pengguna melalui IntentDialog bahkan sebelum perintah dijalankan. Ini sangat berguna dalam skenario suara Siri, di mana lebih mudah menanyai ulang pengguna daripada menjalankan perintah yang salah.

Parameter dengan validasi

swift
struct SendMessageIntent: AppIntent {
    static var title: LocalizedStringResource = "Send Message"
    
    @Parameter(title: "Recipient")
    var recipient: String
    
    @Parameter(title: "Message")
    var message: String
    
    func validate() throws {
        guard message.count >= 1 else {
            throw IntentError.invalidMessage
        }
    }
    
    func perform() async throws -> some IntentResult {
        try await Messenger.shared
            .send(recipient: recipient, text: message)
        return .result(dialog: "Sent!")
    }
}

Membuat intent di Swift: contoh

Contoh lengkap intent untuk mencari catatan di aplikasi mendemonstrasikan kerja dengan AppEntity dan EntityQuery. Intent SearchNotesIntent menerima string pencarian dan mengembalikan daftar catatan yang ditemukan. AppEntity Note mendeskripsikan struktur catatan, dan EntityQuery mengimplementasikan pencarian di penyimpanan. Hasil dikembalikan melalui IntentResult dengan array entitas, yang ditampilkan Shortcuts kepada pengguna.

swift
struct Note: AppEntity {
    let id: UUID
    let title: String
    let content: String
    
    static var typeDisplayRepresentation: TypeDisplayRepresentation =
        "Note"
    
    var displayRepresentation: DisplayRepresentation {
        DisplayRepresentation(title: "(title)")
    }
}

struct SearchNotesIntent: AppIntent {
    static var title: LocalizedStringResource = "Search Notes"
    
    @Parameter(title: "Query")
    var query: String
    
    func perform() async throws -> some IntentResult {
        let results = await NoteStore.shared
            .search(query)
            .map { $0.toEntity() }
        return .result(value: results)
    }
}

Integrasi dengan Shortcuts dan Siri

Setelah mendeklarasikan AppIntent, integrasi dengan Shortcuts dan Siri terjadi secara otomatis. Aplikasi Shortcuts memindai semua AppIntent dari aplikasi yang terinstal dan menampilkannya dalam daftar tindakan yang tersedia. Pengguna dapat menambahkan intent ke perintahnya, mengonfigurasi parameternya, dan menggabungkannya dengan tindakan lain. Untuk Siri, intent muncul sebagai perintah suara tanpa konfigurasi tambahan dari pengembang.

Pengembang dapat meningkatkan integrasi dengan menambahkan suggestedInvocationPhrase — frasa yang direkomendasikan untuk panggilan suara. Misalnya, untuk intent penambahan tugas: suggestedInvocationPhrase = "Add new task". Siri menganalisis frasa ini dan menawarkannya kepada pengguna saat mempelajari perintah suara. Juga dapat ditentukan categories — kategori intent (create, view, search, edit), yang membantu Shortcuts mengelompokkan tindakan berdasarkan makna.

Kategori intent untuk Shortcuts

KategoriContohPerilaku di Shortcuts
.createCreateTaskIntentDikelompokkan dengan tindakan pembuatan lainnya
.viewViewWeatherIntentDitampilkan dalam kategori “Lihat”
.searchSearchNotesIntentDitandai sebagai tindakan pencarian
.editUpdateTaskIntentDikelompokkan dengan tindakan pengeditan

Pertanyaan yang Sering Diajukan

Apakah perlu membuat Intents Extension terpisah untuk AppIntent?

Tidak. AppIntent tidak memerlukan Intents Extension terpisah. Intent dikompilasi langsung ke dalam aplikasi utama, yang menyederhanakan arsitektur dan menghilangkan kebutuhan komunikasi antar-proses.

Apakah AppIntent berfungsi di versi iOS lama?

AppIntent tersedia di iOS 16+, iPadOS 16+, macOS 13+, watchOS 9+. Untuk iOS 15 dan yang lebih lama, harus menggunakan Intents framework. Disarankan untuk mendukung kedua API untuk cakupan perangkat yang luas.

Tipe data apa yang dapat dikembalikan dari intent?

IntentsResult mendukung String, Int, Double, Bool, array AppEntity, IntentDialog, dan tipe kustom. Struktur data kompleks dikembalikan melalui EntityQuery, yang secara otomatis berintegrasi dengan UI Shortcuts.

Bisakah AppIntent dijalankan di server?

Ya, melalui AppIntentsPackage — paket yang memungkinkan eksekusi intent di sisi server. Ini berguna untuk aplikasi dengan logika server di mana intent perlu mengakses data yang tidak tersedia secara lokal.

Bagaimana cara men-debug AppIntent tanpa perangkat fisik?

Gunakan simulator iOS 16+ dengan aplikasi Shortcuts. Tambahkan intent ke perintah Shortcuts di simulator dan jalankan. Untuk skenario Siri, diperlukan perangkat fisik karena simulator tidak mendukung input suara.

Kesimpulan

  • AppIntent — framework deklaratif Apple untuk membuat intent Siri, Shortcuts, dan Spotlight, diperkenalkan di iOS 16 sebagai pengganti Intents framework.
  • Protokol AppIntent mendeskripsikan perintah: title, parameter (@Parameter) dan metode perform() dengan async/await, yang mengembalikan IntentResult.
  • AppEntity dan AppEnum — protokol untuk mendeskripsikan entitas dan enumerasi secara deklaratif, yang secara otomatis menghasilkan UI di Shortcuts.
  • Validasi parameter melalui metode validate() memungkinkan pemeriksaan data sebelum eksekusi intent dan mengembalikan dialog Siri.
  • Integrasi dengan Shortcuts dan Siri terjadi secara otomatis setelah deklarasi intent; suggestedInvocationPhrase meningkatkan pengenalan suara.
  • AppIntentsPackage memungkinkan eksekusi intent di server untuk akses ke data dan logika jarak jauh.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga