AppIntent: bu nima, Siri intentlari modeli va Swift

Muallif: IT Sectr Nashr etilgan: 2026-06-16 O'qish vaqti: 8 daq

AppIntent — Apple çerçivasi, iOS 16 da eskirgan Intents framework o‘rniga taqdim etilgan bo‘lib, ilovalarni Siri, Shortcuts va Spotlight bilan integratsiya qilish uchun deklarativ API taqdim etadi. Eski yondashuvdan farqli o‘laroq, alohida Intent Definition File va ObjC kodini yaratishni talab qiladigan, AppIntent AppIntent va AppEnum protokollari bilan toza Swift dan foydalanadi. Apple Developer Documentation, 2026 ga ko‘ra, AppIntent bitta intent yaratish uchun kod hajmini Intents framework bilan solishtirganda o‘rtacha 60% ga kamaytiradi va Siri buyruqlarini integratsiya qilish vaqtini bir necha kundan bir necha soatgacha qisqartiradi.

Asosiy ma'lumotlar

  • AppIntent — iOS 16 dan boshlab Siri, Shortcuts va Spotlight intentlarini yaratish uchun Apple ning deklarativ çerçivasi.
  • AppIntent protokoli — asosiy qurilish bloki: nom, tavsif, parametrlar va perform() metodi buyruq mantig’ini aniqlaydi.
  • AppEntity — intentlar ishlaydigan ob'ektlarni tavsiflash uchun protokol: loyihalar, vazifalar, kontaktlar, fayllar.
  • AppEnum — parametrlarning deklarativ sanab o‘tishi, Shortcuts da tanlash uchun avtomatik UI yaratadi.
  • Asinxronlik — intentlar async/await, taraqqiyot chiziqlari va foydalanuvchi bilan muloqot uchun IntentDialog ni qo‘llab-quvvatlaydi.

AppIntent nima va u nima üchun kerak?

AppIntent — ilovangiz Siri, Shortcuts, Spotlight, Control Center va Action Button so‘roviga binoan bajarishi mumkin bo‘lgan buyruqlarni deklarativ tavsiflash üchun Apple çerçivasi. Uning asosida AppIntent protokoli yotadi, unda ishlab chiqaruvchi intent nomini, uning parametrlarini va perform() metodini — bajariladigan mantigni tavsiflaydi. Çerçiva avtomatik ravishda Shortcuts ilovasida parametrlarni sozlash üchun foydalanuvchi interfeysini va Siri üchun ovozli iboralarni yaratadi.

AppIntent paydo bo‘lishidan oldin, ishlab chiqaruvchilar Intents framework dan foydalanardilar — Intent Definition File ga asoslangan tizim, Objective-C kodini yaratardi va alohida Intents Extension sozlashni talab qilardi. Bu jarayon murakkab edi: hatto oddiy intent 5 tagacha konfiguratsiya faylini talab qilardi. AppIntent bu murakkablikni bartaraf qiladi — intent bitta Swift faylida tavsiflanadi va tizim Siri va Shortcuts bilan integratsiya üchun kerakli hamma narsani avtomatik yaratadi.

WWDC 2024 Session “Dive deeper into App Intents” ga ko‘ra, Apple AppIntent ni ilovalar funksionalligini an’anaviy UI dan tashqarida kengaytirishning markaziy mexanizmi sifatida ko‘radi. iOS 18 chiqishiga qadar App Store dagi top 100 ilovaning 70% dan ortig‘i allaqachon Shortcuts va Siri bilan integratsiya üchun AppIntent dan foydalanadi va o‘rtacha iOS 18 foydalanuvchisi ovozli buyruqlar yoki vidjetlar orqali kuniga 4–6 ta intentni ishga tushiradi.

AppIntent qayerda ishlatiladi

  • Siri — ovozli buyruqlar: “Hey Siri, MyApp ga vazifa qo‘sh”
  • Shortcuts — Yönalishlar ilovasida parametrlarni sozlash bilan avtomatlashtirish
  • Spotlight — qidiruv satridan to‘g‘ridan-to‘g‘ri buyruqlarni qidirish va bajarish
  • Control Center — iOS 18+ üchun tezkor harakat tugmalari
  • Action Button — iPhone 15 Pro va undan yangi modellarda tugma üchun harakat sozlamasi

AppIntent vs Intents framework: asosiy farqlar

Intents framework (iOS 10–15) .intentdefinition faylini yaratishni, Xcode orqali ObjC/Swift klasslarini generatsiya qilishni, Intents Extension va App Intent Configuration sozlashni talab qilardi. AppIntent (iOS 16+) bu quvurni generatsiya, kengaytmalar va qo‘shimcha konfiguratsiyalarsiz toza Swift kodi bilan to‘liq almashtiradi. Bu intentlarni yaratish jarayonini SiriKit ni o‘rganmasdan oddiy iOS ishlab chiqaruvchisi üchun ham qulay qiladi.

AppIntent ning asosiy afzalligi — deklarativlik. Ishlab chiqaruvchi intent nima qilishini tavsiflaydi, tizim bilan qanday integratsiyalashishini emas. Çerçiva Siri dialog stsenariylarini, Shortcuts da parametrlarni ko‘rsatishni va intentlar o‘rtasida kontekstni uzatishni o‘zi boshqaradi. Eski Intents framework da integratsiyaning har bir jihati qo‘lda kodlanishi kerak edi, shu jumladan intent UI sini ko‘rsatish üchun INUIHostedView.

Yondashuvlarni solishtirish

XarakteristikaIntents frameworkAppIntent
Kod hajmi100–300 qator har bir intent üchun30–60 qator
Kerakli fayllar.intentdefinition, Extension, Config1 Swift fayl
Kod generatsiyasiMajburiy (Xcode -> ObjC)Talab qilinmaydi
AsinxronlikFaqat completion handlerasync/await + taraqqiyot
IntentDialogYo‘qO‘rnatilgan Siri dialoglari

Asosiy protokollar: AppIntent, AppEntity, AppEnum

AppIntent — intentni aniqlaydigan markaziy protokol. U title (Siri üchun nom), description (Shortcuts da tavsif), parametrlar (@Parameter orqali) va IntentResult qaytaradigan perform() metodini o‘z ichiga oladi. Natija IntentDialog (Siri bilan dialog), Shortcuts ga qaytariladigan qiymat yoki xato bo‘lishi mumkin. Har bir intent shuningdek suggestedInvocationPhrase — ovozli chaqiruv üchun iborani taqdim etishi mumkin.

AppEntity intentlar ishlaydigan ob'ektlarni tavsiflaydi. Masalan, ilova loyihalarni boshqarsa, AppEntity Project id, displayRepresentation (ob'ektni UI da qanday ko‘rsatish) va defaultQuery (ob'ektlarni qanday qidirish) ni o‘z ichiga oladi. AppEnum — Shortcuts da picker elementi bilan UI yaratadigan tanlov parametrlari üchun sanab o‘tish. Parametrlar ro‘yxatini qo‘lda yaratish o‘rniga, AppEnum ga mos keladigan enum e’lon qilish kifoya.

AppEnum va parametr misoli

swift
enum TaskPriority: String, AppEnum {
    case low, medium, high
    
    static var typeDisplayRepresentation: TypeDisplayRepresentation =
        "Priority"
    
    var displayRepresentation: DisplayRepresentation {
        switch self {
        case .low: "Low"
        case .medium: "Medium"
        case .high: "High"
        }
    }
}

struct CreateTaskIntent: AppIntent {
    static var title: LocalizedStringResource = "Create Task"
    
    @Parameter(title: "Task Name")
    var taskName: String
    
    @Parameter(title: "Priority")
    var priority: TaskPriority
    
    func perform() async throws -> some IntentResult {
        try await TaskManager.shared
            .createTask(name: taskName, priority: priority)
        return .result(dialog: "Task created")
    }
}

Intent parametrlari va ularning validatsiyasi

AppIntent parametrlari @Parameter property wrapper orqali e’lon qilinadi, u avtomatik ravishda Shortcuts UI va Siri ovozli so‘rovlari bilan integratsiyalanadi. Har bir parametr title (Shortcuts da ko‘rsatiladi) ga ega va tavsif, standart qiymatlar, cheklovlarni o‘z ichiga olishi mumkin. AppIntent standart turlarni qo‘llab-quvvatlaydi: String, Int, Double, Bool, shuningdek AppEntity va AppEnum orqali maxsus turlarni.

Parametrlarni validatsiya qilish perform() metodida mantiqni bajarishdan oldin amalga oshiriladi. Agar parametrlar noto‘g‘ri bo‘lsa, intent IntentError orqali xato qaytaradi. Murakkab validatsiya üchun perform() dan oldin chaqiriladigan validate() metodini amalga oshirish mumkin, u buyruqni bajarishdan oldin IntentDialog orqali foydalanuvchiga qayta aloqa taqdim etishi mumkin. Bu, ayniqsa, Siri ovozli stsenariylarida foydali, bu erda foydalanuvchini qayta so‘rash noto‘g‘ri buyruqni bajarishdan osonroq.

Validatsiya bilan parametrlar

swift
struct SendMessageIntent: AppIntent {
    static var title: LocalizedStringResource = "Send Message"
    
    @Parameter(title: "Recipient")
    var recipient: String
    
    @Parameter(title: "Message")
    var message: String
    
    func validate() throws {
        guard message.count >= 1 else {
            throw IntentError.invalidMessage
        }
    }
    
    func perform() async throws -> some IntentResult {
        try await Messenger.shared
            .send(recipient: recipient, text: message)
        return .result(dialog: "Sent!")
    }
}

Swift da intent yaratish: misol

Ilovada eslatmalarni qidirish üchun to‘liq intent misoli AppEntity va EntityQuery bilan ishlashni namoyish etadi. SearchNotesIntent intenti qidiruv satrini qabul qiladi va topilgan eslatmalar ro‘yxatini qaytaradi. AppEntity Note eslatma tuzilmasini tavsiflaydi, EntityQuery esa omborda qidiruvni amalga oshiradi. Natija IntentResult orqali ob'ektlar massivi bilan qaytariladi, Shortcuts uni foydalanuvchiga ko‘rsatadi.

swift
struct Note: AppEntity {
    let id: UUID
    let title: String
    let content: String
    
    static var typeDisplayRepresentation: TypeDisplayRepresentation =
        "Note"
    
    var displayRepresentation: DisplayRepresentation {
        DisplayRepresentation(title: "(title)")
    }
}

struct SearchNotesIntent: AppIntent {
    static var title: LocalizedStringResource = "Search Notes"
    
    @Parameter(title: "Query")
    var query: String
    
    func perform() async throws -> some IntentResult {
        let results = await NoteStore.shared
            .search(query)
            .map { $0.toEntity() }
        return .result(value: results)
    }
}

Shortcuts va Siri bilan integratsiya

AppIntent e’lon qilingandan so‘ng, Shortcuts va Siri bilan integratsiya avtomatik ravishda sodir bo‘ladi. Shortcuts ilovasi o‘rnatilgan ilovalardagi barcha AppIntent larni skanerlaydi va ularni mavjud harakatlar ro‘yxatida ko‘rsatadi. Foydalanuvchi intentni o‘z buyrug‘iga qo‘shishi, uning parametrlarini sozlashi va boshqa harakatlar bilan birlashtirishi mumkin. Siri üchun intentlar ishlab chiqaruvchi tomonidan qo‘shimcha sozlashlarsiz ovozli buyruqlar sifatida paydo bo‘ladi.

Ishlab chiqaruvchi suggestedInvocationPhrase — ovozli chaqiruv üchun tavsiya etilgan iborani qo‘shish orqali integratsiyani yaxshilashi mumkin. Masalan, vazifa qo‘shish intenti üchun: suggestedInvocationPhrase = "Add new task". Siri bu iborani tahlil qiladi va ovozli buyruqlarni o‘rgatishda foydalanuvchiga taklif qiladi. Shuningdek categories — intent toifasini (create, view, search, edit) belgilash mumkin, bu Shortcuts ga harakatlarni ma’no bo‘yicha guruhlashga yordam beradi.

Shortcuts üchun intent toifalari

ToifaMisolShortcuts da xatti-harakat
.createCreateTaskIntentBoshqa yaratish harakatlari bilan guruhlanadi
.viewViewWeatherIntent“Ko‘rish” toifasida ko‘rsatiladi
.searchSearchNotesIntentQidiruv harakati sifatida belgilanadi
.editUpdateTaskIntentTahrirlash harakatlari bilan guruhlanadi

Tez-tez beriladigan savollar

AppIntent üchun alohida Intents Extension yaratish kerakmi?

Yo‘q. AppIntent alohida Intents Extension talab qilmaydi. Intentlar to‘g‘ridan-to‘g‘ri asosiy ilovaga kompilyatsiya qilinadi, bu arxitekturani soddalashtiradi va jarayonlararo aloqa ehtiyojini yo‘q qiladi.

AppIntent eski iOS versiyalarida ishlaydimi?

AppIntent iOS 16+, iPadOS 16+, macOS 13+, watchOS 9+ da mavjud. iOS 15 va undan eski versiyalar üchun Intents framework dan foydalanish kerak. Keng qurilma qamrovi üchun ikkala API ni qo‘llab-quvvatlash tavsiya etiladi.

Intent dan qanday ma'lumot turlarini qaytarish mumkin?

IntentsResult String, Int, Double, Bool, AppEntity massivlari, IntentDialog va maxsus turlarni qo‘llab-quvvatlaydi. Murakkab ma'lumot tuzilmalari Shortcuts UI bilan avtomatik integratsiyalanadigan EntityQuery orqali qaytariladi.

AppIntent serverda bajarilishi mumkinmi?

Ha, AppIntentsPackage orqali — intentlarni server tomonida bajarishga imkon beruvchi paket. Bu intentlar mahalliy mavjud bo‘lmagan ma'lumotlarga kirishga muhtoj bo‘lgan server mantig‘iga ega ilovalar üchun foydali.

AppIntent ni jismoniy qurilmasiz qanday tuzatish mumkin?

iOS 16+ simulyatori dan Shortcuts ilovasi bilan foydalaning. Simulyatorda Shortcuts buyrug‘iga intent qo‘shing va uni ishga tushiring. Siri stsenariylari üchun jismoniy qurilma kerak, chunki simulyator ovozli kiritishni qo‘llab-quvvatlamaydi.

Xulosa

  • AppIntent — Intents framework o‘rniga iOS 16 da taqdim etilgan Siri, Shortcuts va Spotlight intentlarini yaratish üchun Apple ning deklarativ çerçivasi.
  • AppIntent protokoli buyruqni tavsiflaydi: title, parametrlar (@Parameter) va async/await bilan IntentResult qaytaradigan perform() metodi.
  • AppEntity va AppEnum — ob'ektlar va sanab o‘tishlarni deklarativ tavsiflash üchun protokollar, Shortcuts da avtomatik UI yaratadi.
  • Parametrlarni validatsiya qilish validate() metodi orqali intentni bajarishdan oldin ma'lumotlarni tekshirish va Siri dialoglarini qaytarish imkonini beradi.
  • Integratsiya Shortcuts va Siri bilan intent e’lon qilingandan so‘ng avtomatik sodir bo‘ladi; suggestedInvocationPhrase ovozli tanib olishni yaxshilaydi.
  • AppIntentsPackage uzoq ma'lumotlar va mantiqqa kirish üchun intentlarni serverda bajarishga imkon beradi.

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.

Loyihani muhokama qilish

Shuningdek o'qing