Siri Intent: temel kavramlar, SiriKit ve Siri entegrasyonu

Yazar: IT Sectr Yayınlanma: 2026-02-15 Okuma süresi: 9 dk

Siri Intent bir iOS uygulamasını Siri sesli asistanıyla entegre etmek için bir mekanizmadır, kullanıcıların uygulamayı açmadan sesle işlem yapmasına olanak tanır. Geliştirme, Intents (Intents.framework) ve SiriKit frameworkleri kullanılarak Swift ile yapılır. iOS 16 ile birlikte App Intents ortaya çıktı — özel sesli komutlar oluşturmak için yeni, daha esnek bir framework. Siri Intent 10 alanı (mesajlar, aramalar, ödemeler, notlar, egzersizler ve diğerleri) destekler ve uygulamanın IntentHandler aracılığıyla sesli istekleri işlemesine olanak tanır. Temel kavramları, mimariyi ve kod örneklerini keşfedelim.

Önemli Çıkarımlar

  • Siri Intent — bir uygulamayı açmadan Siri aracılığıyla bir eylemi gerçekleştiren sesli komut
  • SiriKit (iOS 10+) — önceden tanımlanmış alanlara sahip bir framework (mesajlar, aramalar, ödemeler)
  • App Intents (iOS 16+) — isteğe bağlı özel sesli komutlar oluşturmak için yeni bir framework
  • IntentHandler — bir Siri sesli komutuna yanıt olarak uygulama eylemini gerçekleştiren bir işleyici
  • INInteraction — bir intent yürütmenin sonucunu temsil eden, öğrenme için Siri’de kaydedilen nesne

Siri Intent Nedir

Siri Intent bir iOS uygulamasının Siri aracılığıyla kullanıcı tarafından söylenen sesli komutları işlemesine olanak tanıyan bir mekanizmadır. Kullanıcı şöyle dediğinde “Siri, send a message to Ivan on Telegram,” Siri intent’i tanır (INSendMessageIntent), bunu işleyebilecek uygulamayı belirler (Telegram), parametreleri iletir (contact “Ivan,” message text), ve uygulamanın IntentHandler’ını başlatır. Tüm süreç 0.5–2 seconds ve uygulamayı açmayı gerektirmez.

Siri Intent mimarisi üç bileşen içerir. İlki, intent yapısını tanımlayan .intentdefinition dosyasıdır: parametreler (String, Integer, INPerson), tetikleyici ifadeler ve yanıtlar. İkincisi, işleme protokolünü uygulayan IntentHandler’dır: parametreleri alır, eylemi gerçekleştirir (örn. uygulama API’si üzerinden mesaj gönderir) ve bir sonuç koduyla INInteraction döndürür. Üçüncüsü, kendi sürecinde çalışan Xcode’da ayrı bir hedef olan Intents Extension’dır. Siri, bir sesli istek üzerine Intents Extension’ı başlatır, veri iletir ve sonucu alır. Extension’ın UI’ı yoktur — arka planda çalışır ve 5–10 saniye içinde tamamlanmalıdır.

Siri Intent kullanım durumları: sending messages (INSendMessageIntent), making calls (INStartCallIntent), sending payments (INSendPaymentIntent), creating notes (INCreateNoteIntent), workouts (INStartWorkoutIntent), photos (INAramaForFotoğraflarIntent), booking trips (INBookRestaurantReservationIntent), car functions (INSetCarLockStatusIntent). Her alanın, Apple tarafından güvenlik için tanımlanmış katı bir parametre şeması ve sınırlamaları vardır.

SiriKit: Mimari ve Alanlar

SiriKit Apple tarafından iOS 10’da (2016) tanıtılan bir frameworktür. Tipik eylemler için hazır alanlar (Intents) sağlar: messages, calls, payments, notes, reminders, photos, workouts, booking, car functions, search. Her alan için Apple bir dizi Intent sınıfı tanımlamıştır (INSendMessageIntent, INStartCallIntent) uygulamanın IntentHandler aracılığıyla uyguladığı. SiriKit, yürütmeden önce otomatik olarak bir UI onayı oluşturur (ödemeler ve mesajlar için onay zorunludur).

SiriKit Alanları:

  • Mesajlar — INSendMessageIntent, INAramaForMesajlarIntent, INSetMessageAttributeIntent
  • Aramalar — INStartCallIntent, INAramaForCallHistoryIntent
  • Ödemeler — INSendPaymentIntent, INRequestPaymentIntent
  • Notlar — INCreateNoteIntent, INAramaForNotlarIntent, INAddTasksIntent
  • Hatırlatıcılar — INCreateTaskListIntent, INAddTasksIntent, INSetTaskAttributeIntent
  • Egzersizler — INStartWorkoutIntent, INPauseWorkoutIntent, INEndWorkoutIntent
  • Fotoğraflar — INAramaForFotoğraflarIntent, INStartPhotoPlaybackIntent
  • CarPlay — INSetCarLockStatusIntent, INGetCarLockStatusIntent
  • Arama — INAramaForMesajlarIntent, INAramaForNotebookItemsIntent

SiriKit Sınırlamaları: geliştiriciler özel alanlar oluşturamaz — yalnızca önceden tanımlanmış olanları kullanabilirler. Bu sınırlama, iOS 16’da App Intents’in tanıtılmasıyla çözüldü; bu, herhangi bir uygulama eylemi için isteğe bağlı sesli komutlar oluşturmaya olanak tanır.

App Intents: Yeni Framework

App Intents iOS 16’da (2022) tanıtılan ve iOS 17–18’de önemli ölçüde genişletilen bir Apple frameworküdür. Sabit alanları olan SiriKit’in aksine, App Intents geliştiricilerin herhangi bir uygulama eylemi için kendi sesli komutlarını tanımlamasına olanak tanır: “Siri, add milk to the shopping list in AnyList,” “Siri, schedule a meeting in Fantastical,” “Siri, turn on the living room light in Home.” Özel intent’ler, parametreler, ifadeler ve bir onay şeması ile AppIntent protokolü aracılığıyla tanımlanır.

App Intents Bileşenleri:

  • AppIntent — bir eylemi tanımlamak için protokol: title, description, parameters, perform()
  • IntentParameter — tipleri olan komut parametreleri (String, Int, URL, Entity, Measurement)
  • IntentDialog — Siri için diyaloglar: onay talebi, başarı veya hata yanıtı
  • WidgetIntent — widget dokunmalarını işlemek için App Intents’in bir alt kümesi (iOS 17+)
  • Shortcuts — App Intents, Shortcuts uygulamasıyla otomatik olarak entegre olur

App Intents vs SiriKit: temel fark esnekliktir. SiriKit 10 alanla sınırlıdır, App Intents herhangi bir komut oluşturmaya izin verir. SiriKit ayrı bir Intents Extension hedefi gerektirir, App Intents ana uygulama içinde çalışır. SiriKit Intents.framework (Objective-C/Swift) kullanır, App Intents @Intent ve @Parameter makrolarıyla yeni bir bildirimsel Swift sözdizimi kullanır. Apple’a göre, 2025 itibarıyla App Intents, Siri desteği olan yeni projelerin %70’inde kullanılmaktadır.

Kod Örneği: Swift Intents

Uygulamaya not eklemek için özel bir App Intent oluşturma örneği. iOS 16+ içinde App Intents framework’ünü kullanan modern yaklaşımı gösterir.

swift
import AppIntents

// 1. Not eklemek için özel Intent
struct AddNoteIntent: AppIntent {
    // Komut adı (Shortcuts’ta görünür)
    static var title: LocalizedStringResource = "Not ekle"

    // Komut açıklaması
    static var description: LocalizedStringResource = "Uygulamada yeni bir not oluşturur"

    // Komut parametreleri
    @Parameter(title: "Not metni")
    var noteContent: String

    @Parameter(title: "Kategori", default: "Genel")
    var category: String

    // Eylemi gerçekleştirme
    func perform() async throws -> some IntentResult {
        // Yerel depolama aracılığıyla not oluşturma
        let note = Note(content: noteContent, category: category)
        try await NoteStore.shared.save(note)

        // Siri için bir diyalogla sonucu döndürme
        return .result(
            dialog: .response("Not "(noteContent)" oluşturuldu")
        )
    }
}

// 2. App Shortcut Provider — komutları kaydetme
struct NotesShortcuts: AppShortcutsProvider {
    @AppShortcutsBuilder
    static var appShortcuts: [AppShortcut] {
        AppShortcut(
            intent: AddNoteIntent(),
            phrases: [
                "(.applicationName) not ekle",
                "(.applicationName) içinde (.$noteContent) ile not oluştur",
                "(.applicationName) içinde (.$noteContent) yaz",
            ]
        )
    }
}

// 3. Mesajlar için SiriKit Intent (klasik yaklaşım)
class MessageIntentHandler: NSObject, INSendMessageIntentHandling {

    func resolveRecipients(
        for intent: INSendMessageIntent,
        completion: @escaping ([INPersonResolutionResult]) -> Void
    ) {
        guard let recipients = intent.recipients else {
            completion([.needsRequired()])
            return
        }
        // Uygulamanın adres defteri aracılığıyla kişileri çözme
        let results = recipients.map { INPersonResolutionResult.success(with: $0) }
        completion(results)
    }

    func handle(
        intent: INSendMessageIntent,
        completion: @escaping (INSendMessageIntentResponse) -> Void
    ) {
        // Uygulama API’si aracılığıyla mesaj gönderme
        let response = INSendMessageIntentResponse(
            code: .success, userActivity: nil
        )
        completion(response)
    }
}

Önemli noktalar: AppIntent — özel sesli komutlar için protokol; @Parameter — komut parametrelerini tanımlayan makro; perform() — eylemi yürüten ve Siri için bir diyalogla sonuç döndüren yöntem; AppShortcutsProvider — uygulamanın komutlarını Siri ve Shortcuts’a kaydeder; INSendMessageIntentHandling — mesaj alanını işlemek için SiriKit protokolü. Tetikleyici ifadeler, çeşitlilik için .applicationName ve \.$parameter aracılığıyla ayarlanır.

Öneriler ve Sınırlamalar

Siri Intents oluşturmak için öneriler: telaffuz varyantlarıyla net tetikleyici ifadeler tanımlayın; yürütmeden sonra bilgilendirici diyalog döndürün (başarı/hata); açıklama talepleriyle çözümleme yöntemleri aracılığıyla eksik parametre durumlarını işleyin; Siri öğrenmesi için yürütmeden sonra INInteraction kaydedin; gerçek bir cihazda test edin (simülatör Siri’yi desteklemez). App Intents için, tanımayı iyileştirmek için inAppAramaKeywords ile @Intent kullanın.

Sınırlamalar: SiriKit Intent’leri 10 alanla sınırlıdır. Intents Extension 5–10 saniye sınırıyla çalışır — aşılırsa, Siri hata bildirir. Siri Intent’in UI’ı yoktur — tüm arayüz Siri tarafından oluşturulur. App Intents yalnızca iOS 16+ sürümünde kullanılabilir (2026 itibarıyla ~%85 cihaz kapsamı). iOS 13–15’i desteklemek için SiriKit kullanılmalıdır. Gizlilik: Siri, uygulamaya ses kayıtları iletmez — yalnızca tanınan parametre metnini iletir. Hassas eylemler için (ödemeler, mesajlar), kullanıcı onayı zorunludur.

ParameterSiriKitApp Intents
Minimum iOSiOS 10iOS 16
Domains10 predefinedArbitrary
LanguageObjective-C / SwiftSwift (macros)
TargetIntents ExtensionMain app
UISiri UI (generation)Siri UI (generation)
ConfirmationFor payments/messagesOptional
ShortcutsManualAutomatic
Widget integrationNoWidgetIntent (iOS 17+)

Performans ve hata ayıklama: Intents Extension, 30–50 MB bellek sınırıyla ayrı bir süreçte çalışır. Hata ayıklama için, Xcode’da Siri sürecine bağlı «Intents Extension» şemasını kullanın. Günlükler cihaz konsoluna çıktılanır. App Intents, cihazdaki Shortcuts uygulaması aracılığıyla hata ayıklanır. INInteraction yerel olarak kaydedilir ve Siri tarafından öneriler için kullanılır — güncel olmayan etkileşimleri INInteraction delete ile silin.

Sıkça Sorulan Sorular

Siri Intent Nedir in simple words?

Siri Intent, bir uygulamayı açmadan belirli bir eylemi tetikleyen sesli bir komuttur. Kullanıcı «Siri, WhatsApp’ta mesaj gönder» der ve Siri, eylemi IntentHandler of the WhatsApp app.

SiriKit, App Intents’ten nasıl farklıdır?

SiriKit (iOS 10+), önceden tanımlanmış alanları olan (mesajlar, aramalar, ödemeler) daha eski bir frameworktür. App Intents (iOS 16+) is a new framework that allows creating custom intents for any actions without domain limitations.

SiriKit hangi alanları destekler?

SiriKit 10 alanı destekler: messages (INSendMessageIntent), calls (INStartCallIntent), payments (INSendPaymentIntent), notes, reminders, photos, workouts, trip booking, car functions, and search.

Siri Intent sesli girdiyi nasıl işler?

Siri, konuşmayı tanır ve .intentdefinition’da tanımlanan ifadelere dayanarak belirli bir Intent ile eşleştirir. IntentHandler eylemi gerçekleştirir ve sonucu döndürür. Tüm süreç 0.5–2 seconds.

Siri Intent yürütmesi iptal edilebilir mi?

Evet, intent’i tanıdıktan sonra ancak yürütmeden önce Siri kullanıcıya bir onay gösterir. Kullanıcı yürütmeyi sesle («İptal») veya dokunarak iptal edebilir. Ödemeler ve mesajlar için onay zorunludur.

Özet

  • Siri Intent — ekranı açmadan sesli komutlarla bir uygulamayı Siri ile entegre etme mekanizması
  • SiriKit (iOS 10+) — Intents Extension aracılığıyla 10 sabit alanı (mesajlar, aramalar, ödemeler) olan bir framework
  • App Intents (iOS 16+) — @Intent ve @Parameter makrolarıyla isteğe bağlı özel komutlar için yeni bir framework
  • IntentHandler — uygulama eylemini gerçekleştirir, Siri’den parametre alır ve sonuçla birlikte INInteraction döndürür
  • Trigger phrases are set via .intentdefinition (SiriKit) or @AppShortcutsBuilder (App Intents)
  • Limitations — 5–10 saniye yürütme sınırı, 30–50 MB bellek, hassas eylemler için onay
  • App Intents — iOS 16+ için tercih edilen yaklaşım, SiriKit — iOS 13–15’i desteklemek için

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun