Intents Extension: temel kavramlar ve iOS'ta Siri Intents entegrasyonu

Yazar: IT Sectr Yayınlanma: 2026-06-16 Okuma süresi: 9 dk

Intents Extension, üçüncü taraf uygulamaların Siri sesli komutlarını işlemesine ve SiriKit aracılığıyla sistem hizmetleriyle etkileşime girmesine olanak tanıyan bir iOS uzantısıdır. Uygulama, Intents.intentdefinition içinde kendi intent'lerini tanımlar, INIntentHandler tabanlı işleyicileri uygular ve sesli ifade tanıma için bunları kaydeder. Apple Developer Documentation (2025)'e göre SiriKit, mesajlaşma ve ödemelerden egzersiz ve rezervasyonlara kadar 20'den fazla intent alanını destekler ve iOS 14'ten itibaren IntentsExtension aracılığıyla özel intent desteği eklenmiştir.

Temel Noktalar

  • Intents Extension, arka planda uygulama adına Siri sesli komutlarını ve sistem intent'lerini işler
  • Intent'ler, Xcode'un görsel düzenleyicisinde parametreler ve yanıtlarla birlikte Intents.intentdefinition dosyası aracılığıyla tanımlanır
  • Temel protokol, istekleri işlemek için handle(intent:completion:) yöntemini uygulayan INIntentHandler'dır
  • Özel intent'ler (iOS 14+), uygulamanın standart SiriKit alanlarına bağlı kalmadan kendi komut türlerini oluşturmasına olanak tanır
  • Uzantı, bir komutu yürütmeden önce Siri içinde özel bir arayüz görüntülemek için INUIHostedViewProviding'i destekler

iOS'ta Intents Extension Nedir

Intents Extension, Siri, Shortcuts ve diğer sistem hizmetlerinin standartlaştırılmış INIntentHandler protokolü aracılığıyla uygulama işlevselliğini çağırmasına olanak tanıyan bir uygulama uzantısıdır. Bir kullanıcı “Hey Siri, Messenger X'te mesaj gönder” dediğinde, Siri ilgili uzantıyı etkinleştirir, istek parametrelerini iletir ve seslendirme için sonucu alır.

Diğer uzantı türlerinin aksine, Intents Extension görünür bir arayüz olmadan arka planda çalışır — Siri yanıtı ses veya metin kartıyla görüntüler. Uzantı, isteğe bağlı olarak INUIHostedViewProviding aracılığıyla özel bir kullanıcı arayüzü sağlayabilir ve bu arayüz, onay için bir komut yürütülmeden önce Siri içinde görüntülenir.

Uzantının cihaz ekranına erişimi yoktur ve kendi başına eylem başlatamaz — yalnızca Siri veya Shortcuts'tan gelen bir isteğe yanıt olarak çalışır. Bu, güvenliği sağlar: kullanıcı, uygulamanın sesli komutlarla hangi eylemleri gerçekleştirdiğini her zaman kontrol eder.

SiriKit ve Intent Alanları

SiriKit, iOS 10'da tanıtılan Siri entegrasyonu için Apple'ın framework'üdür. Siri'nin işleyebileceği eylem kategorilerini (mesajlar, telefon görüşmeleri, ödemeler, listeler, hatırlatıcılar, fotoğraflar, egzersizler, rezervasyonlar ve diğerleri) tanımlar. Her alanın sabit bir intent ve yanıt kümesi vardır.

Standart Alanlar

INSendMessageIntent — mesaj gönderme. INStartWorkoutIntent — egzersiz başlatma. INSearchForPhotosIntent — fotoğraf arama. INRequestRideIntent — araç çağırma. Her alan, Siri'nin sesli istekten çıkardığı zorunlu ve isteğe bağlı parametreleri tanımlar. Apple'a göre standart alanlar bir intentdefinition dosyası gerektirmez — ilgili işleyiciyi uygulamak yeterlidir.

Standart alanlara uymayan uygulamalar için iOS 14, özel intent kullanma olanağını sunmuştur. Uygulama, Intents.intentdefinition aracılığıyla kendi komut türlerini ve parametrelerini tanımlar ve Siri, geliştirici tarafından sağlanan örneklere dayanarak ilgili ifadeleri tanımayı öğrenir.

Info.plist'te Yapılandırma

Intents Extension, Info.plist'te IntentsSupported anahtarı aracılığıyla kaydedilir ve uzantının işlediği tüm intent sınıflarını listeler. Siri, bir sesli komutu tanırken uygun uzantıyı seçmek için bu listeyi kullanır. Birden fazla uzantı aynı intent'i destekliyorsa, Siri kullanıcıdan seçim yapmasını ister.

swift
class MessageIntentHandler: NSObject,
    INSendMessageIntentHandling {

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

INIntentHandler: İstek İşleme

INIntentHandler, intent işlemenin her aşamasını (parametre çözümleme, onay ve yürütme) yönetmek için yöntemler tanımlayan bir protokoldür. Uzantı, desteklediği her intent türü için bu yöntemleri uygular.

Üç İşlem Aşaması

resolve — intent parametrelerinin doğrulanması ve netleştirilmesi. Siri, her parametre için bu yöntemi çağırır. Bir parametre eksik veya hatalıysa, uzantı bir netleştirme talebi döndürür ve Siri kullanıcıya ek bir soru sorar. confirm — niyetin onaylanması. Uzantı, intent'i mevcut bağlamda yürütüp yürütemeyeceğini kontrol eder. handle — işlemin fiilen yürütülmesi ve sonucun döndürülmesi.

Üç aşamalı ayrım, sesli kullanıcı deneyimi için çok önemlidir: bir parametre tanınmazsa, Siri eylemi yürütmez, bunun yerine açıklama ister. Örneğin, kullanıcı “Alex'e mesaj gönder” dediyse ancak kişilerde üç Alex varsa — uzantı, netleştirme talebiyle bir resolve döndürür ve Siri “Hangi Alex?” diye sorar.

INIntentResponse ve Durum Kodları

INIntentResponse, uzantının intent'i yürüttükten sonra tamamlama işleyicisinde döndürdüğü bir nesnedir. Yanıt, bir sonuç kodu (success, failure, requiresAuthentication, inProgress) ve Siri'nin seslendirmesi için isteğe bağlı veriler içerir. Kod, Siri'nin nasıl yanıt vereceğini belirler: success — sesli onay, failure — hata mesajı, inProgress — uzun süreli işlem göstergesi.

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())
    }
}

Özel Intent Oluşturma

iOS 14 ile geliştiriciler, standart SiriKit alanlarının dışında özel intent tanımlama yeteneği kazandı. Özel intent'ler, Intents.intentdefinition dosyasında — parametreler ve yanıtlarla yeni komut türlerinin oluşturulduğu Xcode içindeki görsel düzenleyicide — açıklanır.

Özel Intent Yapısı

Her özel intent, INIntent (istek tanımı) ve INIntentResponse (yanıt tanımı) olmak üzere iki bölümden oluşur. INIntent, String, Integer, CurrencyAmount, bulunan nesneler ve diğerleri gibi veri türlerine sahip parametreler içerir. INIntentResponse, sonuçları döndürmek için özellikler ve bir dizi yanıt kodu içerir. Xcode, bu tanıma dayanarak otomatik olarak Swift sınıfları oluşturur.

Apple, özel bir intent'te 5'ten fazla parametre bulunmamasını önerir — aşırı parametreler ses tanımayı bozar ve kullanıcı deneyimini karmaşıklaştırır. Her parametre için, Siri'nin bunları doğru şekilde tanımayı öğrenmesi için Asistan Diyaloğu'nda örnek ifadeler sağlanması önerilir.

Siri İçin Örnek İfadeler

Intents.intentdefinition içinde, her intent için örnek cümleler belirtebilirsiniz — kullanıcının intent'i etkinleştirmek için Siri'ye söyleyeceği ifadeler. Örnekler: “Uygulamamda kahve sipariş et”, “Uygulamamdan pizza tarifi bulmasını iste”. Siri, tanıma eğitimi için bu ifadeleri kullanır ve Shortcuts kurulumu sırasında kullanıcıya önerir.

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

Sesli Etkileşim ve INUIHostedViewProviding

INUIHostedViewProviding, Intents Extension'ın bir komutu yürütmeden önce Siri içinde özel bir arayüz göstermesine olanak tanıyan bir protokoldür. Örneğin, araç çağırma sırasında uzantı, rota ve ücreti gösteren bir harita görüntüleyebilir ve kullanıcı dokunarak eylemi onaylar.

Arayüz Yapılandırması

Protokol, configure(with:for:completion:) yöntemini tanımlar; bu yöntemde uzantı intent'i alır ve Siri'ye gömülmek üzere bir UIViewController döndürür. Kontrolörün boyutu sınırlıdır — maksimum yükseklik 200 punto. Tutar, saat, adres gibi temel bilgileri içeren kompakt kartların kullanılması önerilir.

Özel arayüz isteğe bağlıdır — uzantı INUIHostedViewProviding'i uygulamazsa, Siri intent türü ve uygulama adıyla standart bir kart görüntüler. Çoğu intent için standart kullanıcı arayüzü yeterlidir ve Apple, yalnızca anlamayı gerçekten iyileştirdiğinde — örneğin bir rota göstermek veya ödemeyi onaylamak için — özel arayüz eklenmesini önerir.

Güvenlik ve Onay

Finans veya kişisel verilerle ilgili intent'ler için kimlik doğrulama gereklidir. INIntentResponse, yürütmeden önce Siri'yi Face ID veya Touch ID istemeye zorlayan requiresAuthentication kodunu destekler. Kimlik doğrulamadan sonra uzantı, kimlik doğrulama durumunun kontrol edildiği ayrı bir handle çağrısıyla onay alır.

Apple özellikle vurgular: Intents Extension kendi şifresini veya biyometrik verilerini istememelidir — sistem kimlik doğrulaması kullanılır. Uygulama ve uzantı arasında paylaşılan erişime sahip Keychain'de erişim token'ları depolamak, uzun süreli oturumlar için standart bir uygulamadır.

swift
class IntentViewController: UIViewController {

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

Sıkça Sorulan Sorular

Intents Extension Siri olmadan kullanılabilir mi?

Evet, uzantı sesli girdi olmadan Shortcuts uygulamasından intent'leri işleyebilir. Kullanıcı, önerilen eylemlerden bir kısayol oluşturur ve uzantı, Siri'nin katılımı olmadan bunu yürütür.

Hangi iOS sürümleri özel intent'leri destekler?

Özel intent'ler iOS 14 ve sonraki sürümlerde kullanılabilir. iOS 10–13 için yalnızca standart SiriKit alanları kullanılabilir. Özel intent'ler, Intents.intentdefinition ve Swift sınıfı oluşturma gerektirir.

Bir intent'i işlemek için ne kadar süre verilir?

Siri, uzantının yanıtını yaklaşık 15 saniye bekler. Limit aşılırsa, Siri kullanıcıya eylemin tamamlanamadığını bildirir. Uzun süreli işlemler için inProgress yanıt kodunu kullanın.

Intents Extension'a nasıl yetkilendirme token'ı iletilir?

Ana uygulama ve uzantı arasında bir erişim grubu aracılığıyla paylaşılan erişime sahip Keychain kullanın. App Group shared UserDefaults bir alternatiftir ancak güvenlik açısından Keychain'den daha düşüktür.

Intents Extension ile Intents UI Extension arasındaki fark nedir?

Intents Extension mantığı işler — resolve, confirm, handle. Intents UI Extension, INUIHostedViewProviding aracılığıyla Siri içinde görüntülenmek üzere özel bir arayüz sağlar. Her ikisi birlikte çalışabilir.

Özet

  • Intents Extension, INIntentHandler protokolü aracılığıyla Siri sesli komutlarını ve Shortcuts kısayollarını işler
  • SiriKit, 20'den fazla standart alan sağlar ve iOS 14'ten itibaren özel intent'leri destekler
  • Intent yaşam döngüsü üç aşama içerir: resolve (netleştirme), confirm (onay) ve handle (yürütme)
  • Özel intent'ler, Siri için parametreler, yanıtlar ve örnek ifadelerle Intents.intentdefinition içinde oluşturulur
  • INUIHostedViewProviding, yürütmeden önce Siri içinde özel bir onay arayüzü görüntülemeye olanak tanır
  • Finansal ve özel eylemler için Face ID veya Touch ID ile sistem kimlik doğrulaması kullanılır

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