Intents Extension: əsas anlayışlar və Siri Intents-in iOS-a inteqrasiyası

Müəllif: IT Sectr Dərc olunub: 2026-06-16 Oxuma vaxtı: 9 dəq

Intents Extension iOS genişlənməsidir ki, üçüncü tərəf tətbiqlərinə Siri səsli əmrlərini emal etməyə və SiriKit vasitəsilə sistem xidmətləri ilə qarşılıqlı əlaqə yaratmağa imkan verir. Tətbiq Intents.intentdefinition-da öz intentlərini təyin edir, INIntentHandler əsasında işləyicilər yaradır və onları səsli ifadələrin tanınması üçün qeydiyyatdan keçirir. Apple Developer Documentation (2025)-a görə, SiriKit 20-dən çox intent domenini dəstəkləyir — mesajlar və ödənişlərdən tutmuş məşq və rezervasiyalara qədər, iOS 14-dən isə IntentsExtension vasitəsilə xüsusi intentlər üçün dəstək əlavə edilmişdir.

Əsas məqamlar

  • Intents Extension Siri səsli əmrlərini və sistem intentlərini tətbiq adından fon rejimində emal edir
  • İntentlər Intents.intentdefinition faylı vasitəsilə Xcode vizual redaktorunda parametrlər və cavablarla təyin edilir
  • Əsas protokol — sorğunun emalı üçün handle(intent:completion:) metodunu reallaşdıran INIntentHandler
  • Xüsusi intentlər (iOS 14+) tətbiqə SiriKit standart domenlərinə bağlanmadan öz əmr növlərini yaratmağa imkan verir
  • Genişlənmə əmrin icrasından əvvəl Siri daxilində xüsusi interfeys göstərmək üçün INUIHostedViewProviding dəstəkləyir

iOS-da Intents Extension nədir

Intents Extension tətbiq genişlənməsidir ki, Siri, Shortcuts və digər sistem xidmətlərinə standartlaşdırılmış INIntentHandler protokolu vasitəsilə tətbiqin funksionallığını çağırmağa imkan verir. İstifadəçi “Salam Siri, X Mesajlaşmasında mesaj göndər” dedikdə, Siri müvafiq genişlənməni aktivləşdirir, sorğu parametrlərini ötürür və səsləndirmə üçün nəticə alır.

Digər genişlənmə növlərindən fərqli olaraq, Intents Extension fon rejimində görünən interfeys olmadan işləyir — Siri cavabı səslə və ya mətn kartı ilə göstərir. Genişlənmə isteğe bağlı olaraq INUIHostedViewProviding vasitəsilə xüsusi interfeys təqdim edə bilər ki, bu da əmrin icrasından əvvəl təsdiq üçün Siri daxilində göstərilir.

Genişlənmə cihaz ekranına giriş əldə edə bilməz və müstəqil olaraq hərəkətlər başlada bilməz — yalnız Siri və ya Shortcuts-dan sorğuya cavab olaraq. Bu təhlükəsizliyi təmin edir: istifadəçi həmişə tətbiqin səsli əmrlər vasitəsilə hansı hərəkətləri yerinə yetirdiyinə nəzarət edir.

SiriKit və intent domenləri

SiriKit — iOS 10-da təqdim edilmiş Siri ilə inteqrasiya üçün Apple freymvorku. O, domenləri — Siri-nin emal edə biləcəyi hərəkət kateqoriyalarını təyin edir: mesajlar, telefon zəngləri, ödənişlər, siyahılar, xatırlatmalar, fotoşəkillər, məşqlər, rezervasiyalar və digərləri. Hər domenin sabit intent və cavab dəsti var.

Standart domenlər

INSendMessageIntent — mesaj göndərmə. INStartWorkoutIntent — məşqə başlama. INSearchForPhotosIntent — şəkil axtarışı. INRequestRideIntent — taksi sifarişi. Hər domen Siri-nin səsli sorğudan çıxardığı məcburi və isteğe bağlı parametrləri təyin edir. Apple-a görə, standart domenlər üçün intentdefinition faylı tələb olunmur — müvafiq handler reallaşdırmaq kifayətdir.

Standart domenlərə daxil olmayan tətbiqlər üçün iOS 14-dən etibarən xüsusi intentlər imkanı yaranmışdır. Tətbiq Intents.intentdefinition vasitəsilə öz əmr növlərini və parametrlərini təyin edir, Siri isə proqramçı tərəfindən təqdim edilən nümunələr əsasında müvafiq ifadələri tanımağı öyrənir.

Info.plist-də konfiqurasiya

Intents Extension Info.plist-də IntentsSupported açarı vasitəsilə qeydiyyatdan keçir, burada genişlənmənin emal etdiyi bütün intent sinifləri sadalanır. Siri səsli əmri tanıyarkən uyğun genişlənməni seçmək üçün bu siyahıdan istifadə edir. Bir neçə genişlənmə eyni intenti dəstəkləyirsə, Siri istifadəçiyə seçim təklif edir.

swift
class MessageIntentHandler: NSObject,
    INSendMessageIntentHandling {

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

INIntentHandler: sorğuların emalı

INIntentHandler — intentin işinin hər mərhələsinin emalı üçün metodları təyin edən protokol: parametrlərin həlli, təsdiqləmə və icra. Genişlənmə dəstəklədiyi hər intent növü üçün bu metodları reallaşdırır.

Üç emal mərhələsi

resolve — intent parametrlərinin yoxlanılması və dəqiqləşdirilməsi. Siri bu metodu hər parametr üçün çağırır. Parametr göstərilməyibsə və ya səhv göstərilibsə, genişlənmə dəqiqləşdirmə sorğusu qaytarır və Siri istifadəçiyə əlavə sual verir. confirm — niyyətin təsdiqlənməsi. Genişlənmə cari kontekstdə intenti yerinə yetirə biləcəyini yoxlayır. handle — əməliyyatın faktiki icrası və nəticənin qaytarılması.

Üç mərhələyə bölünmə səsli UX üçün kritik əhəmiyyət daşıyır: parametr tanınmayıbsa, Siri hərəkəti yerinə yetirmir, əksinə dəqiqləşdirir. Məsələn, istifadəçi “Aleksiyə mesaj göndər” dedisə, amma kontaktlarda üç Aleksis varsa — genişlənmə dəqiqləşdirmə sorğusu ilə resolve qaytarır və Siri “Hansı Aleksiyə?” deyə soruşur.

INIntentResponse və statuslar

INIntentResponse — intentin icrasından sonra genişlənmənin completion-da qaytardığı obyekt. Response nəticə kodunu (success, failure, requiresAuthentication, inProgress) və Siri tərəfindən səsləndirilmək üçün isteğe bağlı məlumatları ehtiva edir. Kod Siri-nin reaksiyasını təyin edir: success — səsli təsdiq, failure — xəta mesajı, inProgress — uzunmüddətli əməliyyat göstəricisi.

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

Xüsusi intentlərin yaradılması

iOS 14-dən etibarən proqramçılar SiriKit standart domenlərindən kənarda öz intentlərini təyin etmək imkanı əldə etdilər. Xüsusi intentlər Intents.intentdefinition faylında təsvir olunur — bu, Xcode daxilində parametrlər və cavablarla yeni əmr növlərinin yaradıldığı vizual redaktordur.

Xüsusi intentin strukturu

Hər xüsusi intent INIntent (sorğu tərifi) və INIntentResponse (cavab tərifi) ibarətdir. INIntent məlumat növü olan parametrləri ehtiva edir — String, Integer, CurrencyAmount, tapılan obyektlər və digərləri. INIntentResponse nəticəni qaytarmaq üçün xassələri və cavab kodları massivini ehtiva edir. Xcode bu tərif əsasında Swift siniflərini avtomatik yaradır.

Apple xüsusi intentə 5 parametrdən çox daxil etməməyi tövsiyə edir — həddindən artıq miqdar səsin tanınmasını pisləşdirir və istifadəçi təcrübəsini çətinləşdirir. Hər parametr üçün Assistant Dialog-da nümunə ifadələr təqdim etmək məsləhətdir ki, Siri onları düzgün tanımağı öyrənsin.

Siri üçün nümunə ifadələr

Intents.intentdefinition-da hər intent üçün nümunə cümlələr göstərilə bilər — istifadəçinin intenti aktivləşdirmək üçün Siri-yə deyəcəyi ifadələr. Nümunələr: “MənimTətbiqimdə qəhvə sifariş et”, “MənimTətbiqimdən pizza resepti tapmağı xahiş et”. Siri bu ifadələri tanımağı öyrənmək üçün istifadə edir və Shortcuts qurarkən istifadəçiyə təklif edir.

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

Səsli qarşılıqlı əlaqə və INUIHostedViewProviding

INUIHostedViewProviding — Intents Extension-a əmrin icrasından əvvəl Siri daxilində xüsusi interfeys göstərməyə imkan verən protokol. Məsələn, taksi sifariş edərkən genişlənmə marşrut və qiymətlə xəritə göstərə bilər, istifadəçi isə hərəkəti toxunmaqla təsdiqləyir.

İnterfeysin konfiqurasiyası

Protokol configure(with:for:completion:) metodunu təyin edir, burada genişlənmə intenti alır və Siri-yə yerləşdiriləcək UIViewController qaytarır. Nəzarətçinin ölçüsü məhduddur — maksimum hündürlük 200 nöqtə. Əsas məlumatları olan yığcam kartlardan istifadə etmək tövsiyə olunur: məbləğ, vaxt, ünvan.

Xüsusi interfeys isteğe bağlıdır — genişlənmə INUIHostedViewProviding reallaşdırmazsa, Siri intent növü və tətbiqlə standart kart göstərir. Əksər intentlər üçün standart UI kifayətdir və Apple yalnız həqiqətən anlaşmanı yaxşılaşdırdıqda xüsusi interfeys əlavə etməyi tövsiyə edir — məsələn, marşrut göstərmək və ya ödənişi təsdiqləmək üçün.

Təhlükəsizlik və təsdiqləmə

Maliyyə və ya şəxsi məlumatlarla əlaqəli intentlər üçün autentifikasiya tələb olunur. INIntentResponse requiresAuthentication kodunu dəstəkləyir, bu da Siri-ni icradan əvvəl Face ID və ya Touch ID tələb etməyə məcbur edir. Autentifikasiyadan sonra genişlənmə autentifikasiya statusunun yoxlanıldığı ayrıca handle çağırışı vasitəsilə təsdiq alır.

Apple xüsusilə vurğulayır: Intents Extension öz şifrəsini və ya biometriyasını tələb etməməlidir — sistem autentifikasiyasından istifadə olunur. Giriş tokenlərinin tətbiq və genişlənmə arasında ümumi girişi olan Keychain-də saxlanması uzunmüddətli sessiyalar üçün standart təcrübədir.

swift
class IntentViewController: UIViewController {

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

Tez-tez verilən suallar

Intents Extension-dən Siri olmadan istifadə etmək olarmı?

Bəli, genişlənmə Shortcuts tətbiqindən intentləri səsli giriş olmadan emal edə bilər. İstifadəçi təklif olunan hərəkətlərdən qısayol yaradır və genişlənmə onu Siri iştirakı olmadan yerinə yetirir.

iOS-un hansı versiyaları xüsusi intentləri dəstəkləyir?

Xüsusi intentlər iOS 14 və daha yeni versiyalarda mövcuddur. iOS 10–13 üçün yalnız standart SiriKit domenləri əlçatandır. Xüsusi intentlər Intents.intentdefinition və Swift siniflərinin generasiyasını tələb edir.

İntentin emalına nə qədər vaxt verilir?

Siri genişlənmədən cavabı təxminən 15 saniyə gözləyir. Limit aşıldıqda Siri istifadəçiyə hərəkətin yerinə yetirilmədiyini bildirir. Uzunmüddətli əməliyyatlar üçün inProgress cavab kodundan istifadə edin.

Avtorizasiya tokenini Intents Extension-a necə ötürmək olar?

Əsas tətbiq və genişlənmə arasında access group vasitəsilə ümumi girişi olan Keychain istifadə edin. App Group shared UserDefaults alternativdir, lakin təhlükəsizlik baxımından Keychain-dən geri qalır.

Intents Extension Intents UI Extension-dan nə ilə fərqlənir?

Intents Extension məntiqi emal edir — resolve, confirm, handle. Intents UI Extension INUIHostedViewProviding vasitəsilə Siri daxilində göstərmək üçün xüsusi interfeys təqdim edir. Hər ikisi birlikdə işləyə bilər.

Nəticə

  • Intents Extension INIntentHandler protokolu vasitəsilə Siri səsli əmrlərini və Shortcuts qısayollarını emal edir
  • SiriKit 20-dən çox standart domen təqdim edir və iOS 14-dən xüsusi intentləri dəstəkləyir
  • İntentin həyat dövrü üç mərhələni əhatə edir: resolve (dəqiqləşdirmə), confirm (təsdiqləmə) və handle (icra)
  • Xüsusi intentlər Intents.intentdefinition-da parametrlər, cavablar və Siri üçün nümunə ifadələrlə yaradılır
  • INUIHostedViewProviding icradan əvvəl Siri daxilində xüsusi təsdiq interfeysi göstərməyə imkan verir
  • Maliyyə və şəxsi hərəkətlər üçün Face ID və ya Touch ID vasitəsilə sistem autentifikasiyasından istifadə olunur

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun