AppIntent: bu nədir, Siri intent modeli və Swift

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

AppIntent — Apple çərçivəsi, iOS 16-da köhnəlmiş Intents framework əvəz etmək üçün təqdim edilmişdir və tətbiqlərin Siri, Shortcuts və Spotlight ilə inteqrasiyası üçün deklarativ API təmin edir. Köhnə yanaşmadan fərqli olaraq, ayrıca Intent Definition File və ObjC kodunun yaradılmasını tələb edən, AppIntent AppIntent və AppEnum protokolları ilə təmiz Swift istifadə edir. Apple Developer Documentation, 2026-ya görə, AppIntent bir intentin yaradılması üçün kodun həcmini Intents framework ilə müqayisədə orta hesabla 60% azaldır və Siri əmrlərinin inteqrasiya müddətini bir neçə gündən bir neçə saata endirir.

Vacib məqamlar

  • AppIntent — iOS 16-dan başlayaraq Siri, Shortcuts və Spotlight intentlərinin yaradılması üçün Apple-ın deklarativ çərçivəsi.
  • AppIntent protokolu — əsas tikinti bloku: ad, təsvir, parametrlər və perform() metodu əmrin məntiqini müəyyən edir.
  • AppEntity — intentlərin işlədiyi varlıqları təsvir etmək üçün protokol: layihələr, tapşırıqlar, əlaqələr, fayllar.
  • AppEnum — parametrlərin deklarativ sadalaması, Shortcuts-da seçim üçün avtomatik UI yaradır.
  • Asinxronluq — intentlər async/await, mərhələ zolaqları və istifadəçi ilə dialoq üçün IntentDialog dəstəkləyir.

AppIntent nədir və nəyə lazımdır?

AppIntent — tətbiqinizin Siri, Shortcuts, Spotlight, Control Center və Action Button vasitəsilə yerinə yetirə biləcəyi əmrləri deklarativ şəkildə təsvir etmək üçün Apple çərçivəsi. Əsasında AppIntent protokolu dayanır, orada tərtibatçı intentin adını, parametrlərini və perform() metodunu — yerinə yetirilən məntiqi təsvir edir. Çərçivə avtomatik olaraq Shortcuts tətbiqində parametrlərin konfiqurasiyası üçün istifadəçi interfeysi və Siri üçün səs frazalarını yaradır.

AppIntent yaranana qədər tərtibatçılar Intents framework-dən istifadə edirdilər — Intent Definition File əsaslı sistem, Objective-C kodu yaradır və ayrıca Intents Extension konfiqurasiyası tələb edirdi. Bu proses çətin idi: hətta sadə bir intent 5 konfiqurasiya faylı tələb edirdi. AppIntent bu mürəkkəbliyi aradan qaldırır — intent bir Swift faylında təsvir edilir və sistem Siri və Shortcuts ilə inteqrasiya üçün lazım olan hər şeyi avtomatik yaradır.

WWDC 2024 "Dive deeper into App Intents" sessiyasına görə, Apple AppIntent-i tətbiqlərin funksionallığını ənənəvi UI-dən kənarda genişləndirmək üçün mərkəzi mexanizm kimi görür. iOS 18 buraxılana qədər App Store-un top 100 tətbiqinin 70%-dən çoxu artıq AppIntent-dən Shortcuts və Siri ilə inteqrasiya üçün istifadə edir və orta iOS 18 istifadəçisi səs əmrləri və ya vidjetlər vasitəsilə gündə 4–6 intent işlədir.

AppIntent harada istifadə olunur

  • Siri — səs əmrləri: “Hey Siri, MyApp-ə tapşırıq əlavə et”
  • Shortcuts — parametrlərin konfiqurasiyası ilə Qısayollar tətbiqində avtomatlaşdırma
  • Spotlight — axtarış zolağından birbaşa əmrlərin axtarılması və yerinə yetirilməsi
  • Control Center — iOS 18+ üçün sürətli hərəkət düymələri
  • Action Button — iPhone 15 Pro və daha yeni modellərdə düymə üçün hərəkətin konfiqurasiyası

AppIntent vs Intents framework: əsas fərqlər

Intents framework (iOS 10–15) .intentdefinition faylının yaradılmasını, Xcode vasitəsilə ObjC/Swift siniflərinin generasiyasını, Intents Extension və App Intent Configuration konfiqurasiyasını tələb edirdi. AppIntent (iOS 16+) bu kəməri generasiya, genişlənmələr və əlavə konfiqurasiyalar olmadan təmiz Swift kodu ilə tamamilə əvəz edir. Bu, intentlərin yaradılması prosesini SiriKit öyrənmədən adi iOS tərtibatçısı üçün əlçatan edir.

AppIntent-in əsas üstünlüyü deklarativlikdir. Tərtibatçı intentin nə etdiyini təsvir edir, sistemlə necə inteqrasiya olunduğunu yox. Çərçivə Siri dialoq ssenarilərini, Shortcuts-da parametrlərin göstərilməsini və intentlər arasında kontekstin ötürülməsini özü idarə edir. Köhnə Intents framework-da inteqrasiyanın hər aspekti əl ilə kodlaşdırılmalı idi, o cümlədən intent UI-nı göstərmək üçün INUIHostedView.

Yanaşmaların müqayisəsi

XarakteristikaIntents frameworkAppIntent
Kod həcmi100–300 sətir intent başına30–60 sətir
Tələb olunan fayllar.intentdefinition, Extension, Config1 Swift faylı
Kod generasiyasıMəcburi (Xcode -> ObjC)Tələb olunmur
AsinxronluqYalnız completion handlerasync/await + mərhələ
IntentDialogYoxDaxili Siri dialoqları

Əsas protokollar: AppIntent, AppEntity, AppEnum

AppIntent — intenti təyin edən mərkəzi protokol. O, title (Siri üçün ad), description (Shortcuts-da təsvir), parametrlər (@Parameter vasitəsilə) və IntentResult qaytaran perform() metodunu ehtiva edir. Nəticə IntentDialog (Siri ilə dialoq), Shortcuts-a qaytarılacaq dəyər və ya xəta ola bilər. Hər intent həmçinin suggestedInvocationPhrase — səs çağırışı üçün ifadə təmin edə bilər.

AppEntity intentlərin işlədiyi varlıqları təsvir edir. Məsələn, tətbiq layihələri idarə edirsə, AppEntity Project id, displayRepresentation (varlığın UI-da necə göstərilməsi) və defaultQuery (varlıqların necə axtarılması) ehtiva edir. AppEnum — Shortcuts-da picker elementi ilə UI yaradan seçim parametrləri üçün sadalama. Parametrlər siyahısını əl ilə yaratmaq əvəzinə, AppEnum-a uyğun enum elan etmək kifayətdir.

AppEnum və parametr nümunəsi

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 parametrləri və onların validasiyası

AppIntent parametrləri @Parameter property wrapper vasitəsilə elan edilir, bu da avtomatik olaraq Shortcuts UI və Siri səs sorğuları ilə inteqrasiya olunur. Hər parametrin title (Shortcuts-da göstərilir) var və təsvir, standart dəyərlər, məhdudiyyətlər ehtiva edə bilər. AppIntent standart tipləri dəstəkləyir: String, Int, Double, Bool, həmçinin AppEntity və AppEnum vasitəsilə fərdi tiplər.

Parametrlərin validasiyası məntiqin yerinə yetirilməsindən əvvəl perform() metodunda həyata keçirilir. Parametrlər düzgün deyilsə, intent IntentError vasitəsilə xəta qaytarır. Mürəkkəb validasiya üçün perform()-dan əvvəl çağırılan və əmrin yerinə yetirilməsindən əvvəl IntentDialog vasitəsilə istifadəçiyə əks əlaqə təmin edə bilən validate() metodu tətbiq oluna bilər. Bu, xüsusilə Siri səs ssenarilərində faydalıdır, burada istifadəçini yenidən soruşmaq səhv əmri yerinə yetirməkdən asandır.

Validasiya ilə parametrlər

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-də intentin yaradılması: nümunə

Tətbiqdə qeydlərin axtarılması üçün intentin tam nümunəsi AppEntityEntityQuery ilə işi nümayiş etdirir. SearchNotesIntent intenti axtarış sətri qəbul edir və tapılan qeydlərin siyahısını qaytarır. AppEntity Note qeydin strukturunu təsvir edir, EntityQuery isə anbarda axtarışı həyata keçirir. Nəticə Shortcuts-un istifadəçiyə göstərdiyi varlıqlar massivi ilə IntentResult vasitəsilə qaytarılır.

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 və Siri ilə inteqrasiya

AppIntent elan edildikdən sonra ShortcutsSiri ilə inteqrasiya avtomatik baş verir. Shortcuts tətbiqi qurulmuş tətbiqlərdən bütün AppIntent-ləri skan edir və onları mövcud əməliyyatlar siyahısında göstərir. İstifadəçi əmrinə intent əlavə edə, parametrlərini konfiqurasiya edə və digər əməliyyatlarla birləşdirə bilər. Siri üçün intentlər tərtibatçı tərəfindən əlavə konfiqurasiya olmadan səs əmrləri kimi görünür.

Tərtibatçı suggestedInvocationPhrase — səs çağırışı üçün tövsiyə olunan ifadə əlavə etməklə inteqrasiyanı yaxşılaşdıra bilər. Məsələn, tapşırıq əlavə etmə intenti üçün: suggestedInvocationPhrase = "Add new task". Siri bu ifadəni təhlil edir və səs əmrlərinin öyrədilməsi zamanı istifadəçiyə təklif edir. Həmçinin categories — intentin kateqoriyasını (create, view, search, edit) təyin etmək olar, bu da Shortcuts-a əməliyyatları mənaya görə qruplaşdırmağa kömək edir.

Shortcuts üçün intent kateqoriyaları

KateqoriyaNümunəShortcuts-da davranış
.createCreateTaskIntentDigər yaratma əməliyyatları ilə qruplaşdırılır
.viewViewWeatherIntent“Baxış” kateqoriyasında göstərilir
.searchSearchNotesIntentAxtarış əməliyyatı kimi qeyd olunur
.editUpdateTaskIntentRedaktə əməliyyatları ilə qruplaşdırılır

Tez-tez verilən suallar

AppIntent üçün ayrıca Intents Extension yaratmaq lazımdırmı?

Xeyr. AppIntent ayrıca Intents Extension tələb etmir. Intentlər birbaşa əsas tətbiqə kompilyasiya olunur, bu da arxitekturanı sadələşdirir və proseslərarası əlaqə ehtiyacını aradan qaldırır.

AppIntent köhnə iOS versiyalarında işləyirmi?

AppIntent iOS 16+, iPadOS 16+, macOS 13+, watchOS 9+ üzərində mövcuddur. iOS 15 və daha köhnə versiyalar üçün Intents framework istifadə edilməlidir. Geniş cihaz əhatəsi üçün hər iki API-ni dəstəkləmək tövsiyə olunur.

Intentdən hansı məlumat tipləri qaytarıla bilər?

IntentsResult String, Int, Double, Bool, AppEntity massivləri, IntentDialog və fərdi tipləri dəstəkləyir. Mürəkkəb məlumat strukturları Shortcuts UI ilə avtomatik inteqrasiya olunan EntityQuery vasitəsilə qaytarılır.

AppIntent serverdə yerinə yetirilə bilərmi?

Bəli, AppIntentsPackage vasitəsilə — intentlərin server tərəfində yerinə yetirilməsinə imkan verən paket. Bu, intentlərin lokal olaraq əlçatan olmayan məlumatlara çıxışının lazım olduğu server məntiqli tətbiqlər üçün faydalıdır.

AppIntent-i fiziki cihaz olmadan necə sazlamaq olar?

iOS 16+ simulyatorundan Shortcuts tətbiqi ilə istifadə edin. Simulyatorda Shortcuts əmrinə intent əlavə edin və işə salın. Siri ssenariləri üçün fiziki cihaz tələb olunur, çünki simulyator səs girişini dəstəkləmir.

Xülasə

  • AppIntent — Intents framework-ın əvəzi kimi iOS 16-da təqdim edilmiş Siri, Shortcuts və Spotlight intentlərinin yaradılması üçün Apple-ın deklarativ çərçivəsi.
  • AppIntent protokolu əmri təsvir edir: title, parametrlər (@Parameter) və async/await ilə IntentResult qaytaran perform() metodu.
  • AppEntityAppEnum — varlıqların və sadalamaların deklarativ təsviri üçün protokollar, Shortcuts-da avtomatik UI yaradır.
  • Parametrlərin validasiyası validate() metodu vasitəsilə intentin yerinə yetirilməsindən əvvəl məlumatları yoxlamağa və Siri dialoqlarını qaytarmağa imkan verir.
  • Integrasiya Shortcuts və Siri ilə intent elan edildikdən sonra avtomatik baş verir; suggestedInvocationPhrase səs tanımanı yaxşılaşdırır.
  • AppIntentsPackage uzaq məlumatlara və məntiqə çıxış üçün intentlərin serverdə yerinə yetirilməsinə imkan verir.

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