Intents Extension bu iOS kengaytmasi bo'lib, uchinchi tomon ilovalariga Siri ovozli buyruqlarini qayta ishlash va SiriKit orqali tizim xizmatlari bilan o'zaro aloqa qilish imkonini beradi. Ilova Intents.intentdefinition da o'z intentlarini belgilaydi, INIntentHandler asosida ishlov beruvchilarni amalga oshiradi va ularni ovozli iboralarni tanib olish uchun ro'yxatdan o'tkazadi. Apple Developer Documentation (2025) ga ko'ra, SiriKit 20 dan ortiq intent domenlarini qo'llab-quvvatlaydi — xabarlar va to'lovlardan tortib mashg'ulotlar va bronlashgacha, iOS 14 dan esa IntentsExtension orqali maxsus intentlar uchun qo'llab-quvvatlash qo'shilgan.
Asosiy nuqtalar
Intents Extension bu ilova kengaytmasi bo'lib, Siri, Shortcuts va boshqa tizim xizmatlariga standartlashtirilgan INIntentHandler protokoli orqali ilova funksionalligini chaqirish imkonini beradi. Foydalanuvchi “Salom Siri, X Messenjerida xabar yubor” deganda, Siri tegishli kengaytmani faollashtiradi, so'rov parametrlarini uzatadi va aytish uchun natijani oladi.
Boshqa kengaytma turlaridan farqli o'laroq, Intents Extension fon rejimida ko'rinadigan interfeyssiz ishlaydi — Siri javobni ovoz yoki matn kartasi bilan ko'rsatadi. Kengaytma ixtiyoriy ravishda INUIHostedViewProviding orqali maxsus interfeysni taqdim etishi mumkin, bu buyruq bajarilishidan oldin tasdiqlash uchun Siri ichida ko'rsatiladi.
Kengaytma qurilma ekraniga kirish imkoniga ega emas va mustaqil ravishda harakatlarni boshlay olmaydi — faqat Siri yoki Shortcuts dan so'rovga javoban. Bu xavfsizlikni ta'minlaydi: foydalanuvchi har doim ilova ovozli buyruqlar orqali qanday harakatlarni bajarishini nazorat qiladi.
SiriKit bu iOS 10 da taqdim etilgan Siri bilan integratsiya uchun Apple freymvorki. U domenlarni — Siri qayta ishlay oladigan harakat kategoriyalarini belgilaydi: xabarlar, telefon qo'ng'iroqlari, to'lovlar, ro'yxatlar, eslatmalar, fotosuratlar, mashg'ulotlar, bronlash va boshqalar. Har bir domenning belgilangan intent va javoblar to'plami mavjud.
INSendMessageIntent — xabar yuborish. INStartWorkoutIntent — mashg'ulotni boshlash. INSearchForPhotosIntent — fotosurat qidirish. INRequestRideIntent — taksi chaqirish. Har bir domen Siri ovozli so'rovdan ajratib oladigan majburiy va ixtiyoriy parametrlarni belgilaydi. Apple ga ko'ra, standart domenlar uchun intentdefinition fayli talab qilinmaydi — tegishli handlerni amalga oshirish kifoya.
Standart domenlarga kirmaydigan ilovalar uchun iOS 14 dan boshlab maxsus intentlar imkoniyati paydo bo'ldi. Ilova Intents.intentdefinition orqali o'z buyruq turlarini va parametrlarini belgilaydi, Siri esa dasturchi tomonidan taqdim etilgan misollar asosida tegishli iboralarni tanib olishni o'rganadi.
Intents Extension Info.plist da IntentsSupported kaliti orqali ro'yxatdan o'tadi, bu yerda kengaytma qayta ishlaydigan barcha intent sinflari sanab o'tiladi. Siri ovozli buyruqni tanib olishda mos kengaytmani tanlash uchun ushbu ro'yxatdan foydalanadi. Agar bir nechta kengaytma bir xil intentni qo'llab-quvvatlasa, Siri foydalanuvchiga tanlashni taklif qiladi.
class MessageIntentHandler: NSObject,
INSendMessageIntentHandling {
func handle(
intent: INSendMessageIntent,
completion: @escaping
(INSendMessageIntentResponse) -> Void
) {
let response = INSendMessageIntentResponse(
code: .success, userActivity: nil)
completion(response)
}
}
INIntentHandler — intent ishining har bir bosqichini qayta ishlash usullarini belgilaydigan protokol: parametrlarni hal qilish, tasdiqlash va ijro etish. Kengaytma qo'llab-quvvatlaydigan har bir intent turi uchun ushbu usullarni amalga oshiradi.
resolve — intent parametrlarini tekshirish va aniqlashtirish. Siri bu usulni har bir parametr uchun chaqiradi. Agar parametr ko'rsatilmagan yoki noto'g'ri ko'rsatilgan bo'lsa, kengaytma aniqlashtirish so'rovini qaytaradi va Siri foydalanuvchiga qo'shimcha savol beradi. confirm — niyatni tasdiqlash. Kengaytma joriy kontekstda intentni bajarishi mumkinligini tekshiradi. handle — operatsiyani haqiqiy bajarish va natijani qaytarish.
Uch bosqichga bo'linish ovozli UX uchun juda muhim: agar parametr tanib olinmasa, Siri harakatni bajarmaydi, balki qayta so'raydi. Masalan, foydalanuvchi “Alekseyga xabar yubor” desa, lekin kontaktlarda uchta Aleksey bo'lsa — kengaytma aniqlashtirish so'rovi bilan resolve qaytaradi va Siri “Qaysi Alekseyga?” deb so'raydi.
INIntentResponse — intent bajarilgandan so'ng kengaytma completion da qaytaradigan obyekt. Response natija kodini (success, failure, requiresAuthentication, inProgress) va Siri tomonidan aytilishi uchun ixtiyoriy ma'lumotlarni o'z ichiga oladi. Kod Siri ning reaksiyasini belgilaydi: success — ovozli tasdiq, failure — xato xabari, inProgress — uzoq muddatli operatsiya ko'rsatkichi.
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 dan boshlab dasturchilar SiriKit standart domenlaridan tashqarida o'z intentlarini belgilash imkoniyatiga ega bo'ldilar. Maxsus intentlar Intents.intentdefinition faylida tavsiflanadi — bu Xcode ichidagi vizual muharrir bo'lib, unda parametrlar va javoblar bilan yangi buyruq turlari yaratiladi.
Har bir maxsus intent INIntent (so'rov ta'rifi) va INIntentResponse (javob ta'rifi) dan iborat. INIntent ma'lumot turiga ega parametrlarni o'z ichiga oladi — String, Integer, CurrencyAmount, topilgan obyektlar va boshqalar. INIntentResponse natijani qaytarish uchun xususiyatlar va javob kodlari massivini o'z ichiga oladi. Xcode ushbu ta'rif asosida Swift sinflarini avtomatik yaratadi.
Apple maxsus intentda 5 parametrdan ko'p bo'lmasligini tavsiya qiladi — haddan tashqari ko'p miqdor ovozni tanib olishni yomonlashtiradi va foydalanuvchi tajribasini murakkablashtiradi. Har bir parametr uchun Assistant Dialog da namuna iboralarni taqdim etish maqsadga muvofiq, shunda Siri ularni to'g'ri tanib olishni o'rganadi.
Intents.intentdefinition da har bir intent uchun namuna jumlalar ko'rsatilishi mumkin — foydalanuvchi intentni faollashtirish uchun Siri ga aytadigan iboralar. Misollar: “MeningIlovamda kofe buyurtma qil”, “MeningIlovamdan pitsa retseptini topishni so'ra”. Siri bu iboralarni tanib olishni o'rganish uchun ishlatadi va Shortcuts ni sozlashda foydalanuvchiga taklif qiladi.
// Intents.intentdefinition (vizual muharrir)
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 ga buyruq bajarilishidan oldin Siri ichida maxsus interfeysni ko'rsatish imkonini beradigan protokol. Masalan, taksi chaqirishda kengaytma marshrut va narx bilan xaritani ko'rsatishi mumkin, foydalanuvchi esa harakatni tegish bilan tasdiqlaydi.
Protokol configure(with:for:completion:) usulini belgilaydi, bu yerda kengaytma intentni oladi va Siri ga joylashtiriladigan UIViewController ni qaytaradi. Boshqaruvchining o'lchami cheklangan — maksimal balandlik 200 nuqta. Kalit ma'lumotlarga ega ixcham kartalardan foydalanish tavsiya etiladi: miqdor, vaqt, manzil.
Maxsus interfeys ixtiyoriy — agar kengaytma INUIHostedViewProviding ni amalga oshirmasa, Siri intent turi va ilova bilan standart kartani ko'rsatadi. Aksariyat intentlar uchun standart UI etarli va Apple faqat tushunishni yaxshilaganda maxsus interfeys qo'shishni tavsiya qiladi — masalan, marshrutni ko'rsatish yoki to'lovni tasdiqlash uchun.
Moliya yoki shaxsiy ma'lumotlar bilan bog'liq intentlar uchun autentifikatsiya talab qilinadi. INIntentResponse requiresAuthentication kodini qo'llab-quvvatlaydi, bu Siri ni bajarishdan oldin Face ID yoki Touch ID so'rashga majbur qiladi. Autentifikatsiyadan so'ng kengaytma autentifikatsiya statusi tekshiriladigan alohida handle chaqiruvi orqali tasdiq oladi.
Apple alohida ta'kidlaydi: Intents Extension o'z paroli yoki biometriyasini so'ramasligi kerak — tizim autentifikatsiyasidan foydalaniladi. Kirish tokenlarini ilova va kengaytma o'rtasida umumiy kirishga ega Keychain da saqlash uzoq muddatli sessiyalar uchun standart amaliyotdir.
class IntentViewController: UIViewController {
func configure(
with intent: INIntent,
completion: @escaping
(UIViewController?) -> Void
) {
let cardView = ConfirmationCardView()
let hostingController =
UIHostingController(rootView: cardView)
completion(hostingController)
}
}
Tez-tez beriladigan savollar
Ha, kengaytma Shortcuts ilovasidan intentlarni ovozli kiritishsiz qayta ishlashi mumkin. Foydalanuvchi taklif qilingan harakatlardan yorliq yaratadi va kengaytma uni Siri ishtirokisiz bajaradi.
Maxsus intentlar iOS 14 va undan yangi versiyalarda mavjud. iOS 10–13 uchun faqat standart SiriKit domenlari mavjud. Maxsus intentlar Intents.intentdefinition va Swift sinflarini yaratishni talab qiladi.
Siri kengaytmadan javobni taxminan 15 soniya kutadi. Limit oshib ketganda Siri foydalanuvchiga harakat bajarilmaganligi haqida xabar beradi. Uzoq muddatli operatsiyalar uchun inProgress javob kodidan foydalaning.
Asosiy ilova va kengaytma o'rtasida access group orqali umumiy kirishga ega Keychain dan foydalaning. App Group shared UserDefaults muqobildir, ammo xavfsizlik jihatidan Keychain dan past turadi.
Intents Extension mantiqni qayta ishlaydi — resolve, confirm, handle. Intents UI Extension INUIHostedViewProviding orqali Siri ichida ko'rsatish uchun maxsus interfeysni taqdim etadi. Ikkalasi birgalikda ishlashi mumkin.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.