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 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 — 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.
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.
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.
class MessageIntentHandler: NSObject,
INSendMessageIntentHandling {
func handle(
intent: INSendMessageIntent,
completion: @escaping
(INSendMessageIntentResponse) -> Void
) {
let response = INSendMessageIntentResponse(
code: .success, userActivity: nil)
completion(response)
}
}
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.
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 — 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.
func resolve(
for intent: INSendMessageIntent,
with completion: @escaping
(INStringResolutionResult) -> Void
) {
if let text = intent.content, !text.isEmpty {
completion(.success(with: text))
} else {
completion(.needsValue())
}
}
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.
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.
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.
// 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"
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.
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.
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.
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
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.
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.
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.
Ə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 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ə
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.
Həm də oxuyun