Intents Extension: konsep kunci dan integrasi Siri Intents di iOS

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

Intents Extension adalah ekstensi iOS yang memungkinkan aplikasi pihak ketiga memproses perintah suara Siri dan berinteraksi dengan layanan sistem melalui SiriKit. Aplikasi menentukan intent-nya sendiri di Intents.intentdefinition, mengimplementasikan handler berdasarkan INIntentHandler, dan mendaftarkannya untuk pengenalan frase suara. Menurut Apple Developer Documentation (2025), SiriKit mendukung lebih dari 20 domain intent — dari pesan dan pembayaran hingga latihan dan reservasi, dan sejak iOS 14 ditambahkan dukungan untuk intent kustom melalui IntentsExtension.

Poin Penting

  • Intents Extension memproses perintah suara Siri dan intent sistem atas nama aplikasi di latar belakang
  • Intent didefinisikan melalui file Intents.intentdefinition dengan parameter dan respons di editor visual Xcode
  • Protokol utama — INIntentHandler, yang mengimplementasikan metode handle(intent:completion:) untuk memproses permintaan
  • Intent kustom (iOS 14+) memungkinkan aplikasi membuat tipe perintah sendiri tanpa terikat pada domain standar SiriKit
  • Ekstensi mendukung INUIHostedViewProviding untuk menampilkan antarmuka kustom di dalam Siri sebelum menjalankan perintah

Apa itu Intents Extension di iOS

Intents Extension adalah ekstensi aplikasi yang memungkinkan Siri, Shortcuts, dan layanan sistem lainnya memanggil fungsionalitas aplikasi melalui protokol standar INIntentHandler. Ketika pengguna mengatakan “Hei Siri, kirim pesan di Messenger X”, Siri mengaktifkan ekstensi yang sesuai, meneruskan parameter permintaan, dan menerima hasil untuk diucapkan.

Tidak seperti jenis ekstensi lainnya, Intents Extension bekerja di latar belakang tanpa antarmuka yang terlihat — Siri sendiri menampilkan respons melalui suara atau kartu teks. Ekstensi dapat secara opsional menyediakan antarmuka kustom melalui INUIHostedViewProviding, yang ditampilkan di dalam Siri sebelum menjalankan perintah untuk konfirmasi.

Ekstensi tidak memiliki akses ke layar perangkat dan tidak dapat memulai tindakan secara mandiri — hanya sebagai respons terhadap permintaan dari Siri atau Shortcuts. Ini memastikan keamanan: pengguna selalu mengontrol tindakan apa yang dilakukan aplikasi melalui perintah suara.

SiriKit dan domain intent

SiriKit adalah framework Apple untuk integrasi dengan Siri, diperkenalkan di iOS 10. Framework ini mendefinisikan domain — kategori tindakan yang dapat diproses Siri: pesan, panggilan telepon, pembayaran, daftar, pengingat, foto, latihan, reservasi, dan lainnya. Setiap domain memiliki kumpulan intent dan respons tetap.

Domain standar

INSendMessageIntent — mengirim pesan. INStartWorkoutIntent — memulai latihan. INSearchForPhotosIntent — mencari foto. INRequestRideIntent — memesan taksi. Setiap domain mendefinisikan parameter wajib dan opsional yang diekstrak Siri dari permintaan suara. Menurut Apple, untuk domain standar tidak diperlukan file intentdefinition — cukup mengimplementasikan handler yang sesuai.

Untuk aplikasi yang tidak masuk dalam domain standar, sejak iOS 14 muncul kemungkinan intent kustom. Aplikasi mendefinisikan tipe perintah dan parameternya sendiri melalui Intents.intentdefinition, dan Siri belajar mengenali frasa yang sesuai berdasarkan contoh yang diberikan oleh pengembang.

Konfigurasi di Info.plist

Intents Extension didaftarkan melalui kunci IntentsSupported di Info.plist, di mana semua kelas intent yang diproses ekstensi dicantumkan. Siri menggunakan daftar ini untuk memilih ekstensi yang tepat saat mengenali perintah suara. Jika beberapa ekstensi mendukung intent yang sama, Siri menawarkan pilihan kepada pengguna.

swift
class MessageIntentHandler: NSObject,
    INSendMessageIntentHandling {

    func handle(
        intent: INSendMessageIntent,
        completion: @escaping
            (INSendMessageIntentResponse) -> Void
    ) {
        let response = INSendMessageIntentResponse(
            code: .success, userActivity: nil)
        completion(response)
    }
}

INIntentHandler: memproses permintaan

INIntentHandler — protokol yang mendefinisikan metode untuk memproses setiap tahap kerja intent: resolusi parameter, konfirmasi, dan eksekusi. Ekstensi mengimplementasikan metode ini untuk setiap jenis intent yang didukungnya.

Tiga tahap pemrosesan

resolve — pemeriksaan dan klarifikasi parameter intent. Siri memanggil metode ini untuk setiap parameter. Jika parameter tidak ditentukan atau tidak benar, ekstensi mengembalikan permintaan klarifikasi, dan Siri mengajukan pertanyaan tambahan kepada pengguna. confirm — konfirmasi niat. Ekstensi memeriksa apakah dapat menjalankan intent dalam konteks saat ini. handle — eksekusi operasi yang sebenarnya dan pengembalian hasil.

Pembagian menjadi tiga tahap sangat penting untuk UX suara: jika parameter tidak dikenali, Siri tidak menjalankan tindakan, melainkan menanyakan ulang. Misalnya, jika pengguna berkata “Kirim pesan ke Alexei”, tetapi di kontak ada tiga Alexei — ekstensi mengembalikan resolve dengan permintaan klarifikasi, dan Siri bertanya “Alexei yang mana?”.

INIntentResponse dan status

INIntentResponse — objek yang dikembalikan ekstensi di completion setelah menjalankan intent. Response berisi kode hasil (success, failure, requiresAuthentication, inProgress) dan data opsional untuk diucapkan Siri. Kode menentukan bagaimana Siri bereaksi: success — konfirmasi suara, failure — pesan kesalahan, inProgress — indikasi operasi yang berlangsung lama.

swift
func resolve(
    for intent: INSendMessageIntent,
    with completion: @escaping
        (INStringResolutionResult) -> Void
) {
    if let text = intent.content, !text.isEmpty {
        completion(.success(with: text))
    } else {
        completion(.needsValue())
    }
}

Membuat intent kustom

Sejak iOS 14, pengembang mendapat kemampuan untuk mendefinisikan intent sendiri di luar domain standar SiriKit. Intent kustom dijelaskan dalam file Intents.intentdefinition — ini adalah editor visual di dalam Xcode di mana tipe perintah baru dengan parameter dan respons dibuat.

Struktur intent kustom

Setiap intent kustom terdiri dari INIntent (definisi permintaan) dan INIntentResponse (definisi respons). INIntent berisi parameter dengan tipe data — String, Integer, CurrencyAmount, objek yang ditemukan, dan lainnya. INIntentResponse berisi properti untuk mengembalikan hasil dan array kode respons. Xcode secara otomatis menghasilkan kelas Swift berdasarkan definisi ini.

Apple merekomendasikan agar intent kustom tidak memiliki lebih dari 5 parameter — jumlah berlebihan menurunkan pengenalan suara dan mempersulit pengalaman pengguna. Untuk setiap parameter, disarankan untuk memberikan contoh frasa di Assistant Dialog agar Siri belajar mengenalinya dengan benar.

Contoh frasa untuk Siri

Di Intents.intentdefinition untuk setiap intent dapat ditentukan contoh kalimat — frasa yang akan diucapkan pengguna kepada Siri untuk mengaktifkan intent. Contoh: “Pesan kopi di AplikasiSaya”, “Minta AplikasiSaya menemukan resep pizza”. Siri menggunakan frasa ini untuk belajar pengenalan dan menawarkannya kepada pengguna saat mengatur Shortcuts.

objective-c
// Intents.intentdefinition (editor visual)
Intent: OrderCoffeeIntent
Parameters:
  - beverage (String)
  - size (String)
  - quantity (Integer)
Response:
  - orderNumber (String)
  - price (CurrencyAmount)
Phrases:
  - "Order coffee in MyApp"
  - "Get a latte from MyApp"

Interaksi suara dan INUIHostedViewProviding

INUIHostedViewProviding — protokol yang memungkinkan Intents Extension menampilkan antarmuka kustom di dalam Siri sebelum menjalankan perintah. Misalnya, saat memesan taksi, ekstensi dapat menampilkan peta dengan rute dan biaya, dan pengguna mengonfirmasi tindakan dengan sentuhan.

Konfigurasi antarmuka

Protokol mendefinisikan metode configure(with:for:completion:), di mana ekstensi menerima intent dan mengembalikan UIViewController yang akan disematkan di Siri. Ukuran controller terbatas — tinggi maksimum 200 poin. Disarankan menggunakan kartu kompak dengan informasi kunci: jumlah, waktu, alamat.

Antarmuka kustom bersifat opsional — jika ekstensi tidak mengimplementasikan INUIHostedViewProviding, Siri menampilkan kartu standar dengan jenis intent dan aplikasi. Untuk sebagian besar intent, UI standar sudah cukup, dan Apple merekomendasikan menambahkan antarmuka kustom hanya ketika benar-benar meningkatkan pemahaman — misalnya, untuk menampilkan rute atau mengonfirmasi pembayaran.

Keamanan dan konfirmasi

Untuk intent yang terkait dengan keuangan atau data pribadi, diperlukan autentikasi. INIntentResponse mendukung kode requiresAuthentication, yang memaksa Siri meminta Face ID atau Touch ID sebelum menjalankan. Setelah autentikasi, ekstensi menerima konfirmasi melalui panggilan handle terpisah, di mana status autentikasi diperiksa.

Apple secara khusus menekankan: Intents Extension tidak boleh meminta kata sandi atau biometrik sendiri — autentikasi sistem digunakan. Menyimpan token akses di Keychain dengan akses bersama antara aplikasi dan ekstensi adalah praktik standar untuk sesi jangka panjang.

swift
class IntentViewController: UIViewController {

    func configure(
        with intent: INIntent,
        completion: @escaping
            (UIViewController?) -> Void
    ) {
        let cardView = ConfirmationCardView()
        let hostingController =
            UIHostingController(rootView: cardView)
        completion(hostingController)
    }
}

Pertanyaan yang Sering Diajukan

Bisakah saya menggunakan Intents Extension tanpa Siri?

Ya, ekstensi dapat memproses intent dari aplikasi Shortcuts tanpa input suara. Pengguna membuat pintasan dari tindakan yang disarankan, dan ekstensi menjalankannya tanpa partisipasi Siri.

Versi iOS apa yang mendukung intent kustom?

Intent kustom tersedia mulai iOS 14 dan lebih baru. Untuk iOS 10–13, hanya domain standar SiriKit yang tersedia. Intent kustom memerlukan Intents.intentdefinition dan pembuatan kelas Swift.

Berapa banyak waktu yang diberikan untuk memproses intent?

Siri menunggu respons dari ekstensi sekitar 15 detik. Jika melebihi batas, Siri memberi tahu pengguna bahwa tindakan gagal dilakukan. Untuk operasi panjang, gunakan kode respons inProgress.

Bagaimana cara meneruskan token otorisasi ke Intents Extension?

Gunakan Keychain dengan akses bersama melalui access group antara aplikasi utama dan ekstensi. App Group shared UserDefaults adalah alternatif, tetapi kalah dengan Keychain dalam hal keamanan.

Apa perbedaan antara Intents Extension dan Intents UI Extension?

Intents Extension memproses logika — resolve, confirm, handle. Intents UI Extension menyediakan antarmuka kustom untuk ditampilkan di dalam Siri melalui INUIHostedViewProviding. Keduanya dapat bekerja bersama.

Kesimpulan

  • Intents Extension memproses perintah suara Siri dan pintasan Shortcuts melalui protokol INIntentHandler
  • SiriKit menyediakan lebih dari 20 domain standar dan mendukung intent kustom sejak iOS 14
  • Siklus hidup intent mencakup tiga tahap: resolve (klarifikasi), confirm (konfirmasi), dan handle (eksekusi)
  • Intent kustom dibuat di Intents.intentdefinition dengan parameter, respons, dan contoh frasa untuk Siri
  • INUIHostedViewProviding memungkinkan menampilkan antarmuka konfirmasi kustom di dalam Siri sebelum eksekusi
  • Untuk tindakan keuangan dan pribadi, digunakan autentikasi sistem melalui Face ID atau Touch ID

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